I. *_*rov 2 java rounding bigdecimal
我想将BigDecimal值舍入到最接近的整数.
我尝试使用Java BigDecimal这个问题的解决方案:舍入到最接近的整数值,但它对我不起作用.
BigDecimal scaled = value.setScale(0, RoundingMode.HALF_UP);
System.out.println(value + " -> " + scaled);
Run Code Online (Sandbox Code Playgroud)
它适用于以下情况:
100.12 -> 100.00
100.44 -> 100.00
100.50 -> 101.00
100.75 -> 101.00
Run Code Online (Sandbox Code Playgroud)
但它失败了
100.47 -> 100 instead of 101.
Run Code Online (Sandbox Code Playgroud)
为什么这段代码不起作用?
您希望总是将数字四舍五入,在您的情况下使用RoundingMode .UP
HALF_UP只会.5向上舍入
舍入模式向"最近邻居"舍入,除非两个邻居等距,在这种情况下向上舍入.
表格显示了这些舍入操作的结果:
Run Code Online (Sandbox Code Playgroud)Input Number UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN UNNECESSARY 5.5 6 5 6 5 6 5 6 throw ArithmeticException 2.5 3 2 3 2 3 2 2 throw ArithmeticException 1.6 2 1 2 1 2 2 2 throw ArithmeticException 1.1 2 1 2 1 1 1 1 throw ArithmeticException
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |