`

java四舍五入

    博客分类:
  • java
 
阅读更多

       java中使用BigDecimal可以实现四舍五入,以下是例子

 

 

	    BigDecimal b1=new BigDecimal("1.3345");
	    BigDecimal b2= b1.setScale(3, RoundingMode.HALF_UP);
	    System.out.println("case 1: b1 origianl:1.3345");
	    System.out.println("b1:"+b1);
	    System.out.println("b2:"+b2);
	    
	    System.out.println();
	    System.out.println("case 2: b1 origianl:1.3341");
	    b1=new BigDecimal("1.3341");
	    b2= b1.setScale(3, RoundingMode.HALF_UP);
	    System.out.println("b1:"+b1);
	    System.out.println("b2:"+b2);
 

   输出:

 

case 1: b1 origianl:1.3345
b1:1.3345
b2:1.335

case 2: b1 origianl:1.3341
b1:1.3341
b2:1.334
 

 

 

注意:

       BigDecimal的很多方法都返回一个BigDecimal,调用这些方法的对象本身状态似乎不改变,如以上的b1与b2

 

1
0
分享到:
评论
4 楼 zk1878 2012-03-28  
Moivre 写道
说了这么多,BigDecimal 的RoundingMode默认值是哪个啊
我记的好像是 HALF_EVEN

这个api没提供获取roundingmode的函数, 看了下源码,蛮繁琐的,懒得看了。实际应用中应该明确设置RoundingMode较好
3 楼 zk1878 2012-03-28  
wmswu 写道
位数 不够 不给补0  还得格式化下...

不用呀,你用toString就是ok了,别转换为int,long这些,执行下面的代码
就明白了
            BigDecimal b1=new BigDecimal("1.1");
    BigDecimal b2= b1.setScale(3, RoundingMode.HALF_UP);
    System.out.println(b2.toString());
    System.out.println(b2.intValue());
2 楼 wmswu 2012-03-27  
位数 不够 不给补0  还得格式化下...
1 楼 Moivre 2012-03-26  
说了这么多,BigDecimal 的RoundingMode默认值是哪个啊
我记的好像是 HALF_EVEN

相关推荐

Global site tag (gtag.js) - Google Analytics