Java--关于ROUND_HALF_DOEN五舍六入

在学习BigDecimal(精准计算浮点数)的时候,敲过这样一串代码:
BigDecimal c = new BigDecimal(“18.8452”).setScale(2, BigDecimal.ROUND_HALF_DOWN);

ROUND_HALF_DOWN是五舍六入,保留两位小数,本来打印的值应该是18.84,但是结果却是打印了18.85

原来是因为五舍六入,舍弃的值一定要正好等于5或者小于5,,,比如18.8452,保留两位小数,舍弃的是0.0052,要大于0.0050,所以仍然会进一位。代码如下

//BigDecimal.ROUND_HALF_UP表示四舍五入
//BigDecimal.ROUND_HALF_DOWN也是五舍六入
//BigDecimal.ROUND_UP表示进位处理(就是直接加1)
//BigDecimal.ROUND_DOWN表示直接去掉尾数。
BigDecimal a = new BigDecimal("18.8450").setScale(2, BigDecimal.ROUND_HALF_DOWN);
BigDecimal c = new BigDecimal("18.8452").setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println(a);
System.out.println(c);

a打印的是18.84
c打印的是18.85

发布了6 篇原创文章 · 获赞 0 · 访问量 85

猜你喜欢

转载自blog.csdn.net/ShaoWeiY/article/details/104703499