yhc0706的gravatar头像
yhc0706 2015-12-02 11:15:02

java.math.BigDecimal类为什么四舍五入结果不一致?

BigDecimal number=new BigDecimal(18.9045613);
System.out.print("RoundingMode四舍五入: " + number.setScale(2,RoundingMode.UP) ); //18.91
System.out.print("BigDecimal四舍五入: " + number.setScale(2,BigDecimal.ROUND_HALF_UP) );//18.90

为什么这两种四舍五入获得的值不一样?

所有回答列表(5)
hrose12的gravatar头像
hrose12  LV21 2015年12月2日

RoundingMode.UP 远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1。注意,此舍入模式始终不会减少计算值的绝对值。

BigDecimal.ROUND_HALF_UP 四舍五入末尾0就取消了

lamian的gravatar头像
lamian  LV51 2015年12月3日

个人建议:

你最好自己查一下 BigDecimal这个类的API

然后好好看一下这两个方法的API说明

serical的gravatar头像
serical  LV12 2015年12月3日

java.math.BigDecimal类为什么四舍五入结果不一致?

junit的gravatar头像
junit  LV2 2015年12月3日

你的说法有问题。这个不是四舍五入,四舍五入只是BigDecimal 其中的一种算法。其中还有很多算法。你去看下API就明白了。

antking的gravatar头像
antking 2015年12月3日

为什么要用这种四舍五入函数,不是还有其他方法吗

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友