小编ilC*_*nia的帖子

java.math.RoundingMode是如何工作的?

我在舍入方面遇到了麻烦.具体来说,在阅读完所有的javadoc后,我期待以下代码:

int n = (integer between 0 and 9, included)
new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
Run Code Online (Sandbox Code Playgroud)

返回n + 0.56.相反,这些都为返回值n04:

 new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
 0.56
 new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
 1.55
 new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
 2.56
 new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
 3.56
 new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
 4.55
Run Code Online (Sandbox Code Playgroud)

我也尝试改变舍入模式:

int n = (integer between 0 and 9, included)
new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
Run Code Online (Sandbox Code Playgroud)

期待n + 0.55每一个人的结果n.相反,返回值与前一个示例完全相同:

 new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
 0.56
 new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
 1.55
 new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
 2.56 …
Run Code Online (Sandbox Code Playgroud)

java rounding

7
推荐指数
1
解决办法
4万
查看次数

标签 统计

java ×1

rounding ×1