Yaw*_*war 0 java rounding bigdecimal
使用Java:
$ jshell
| Welcome to JShell -- Version 17.0.3
| For an introduction type: /help intro
Run Code Online (Sandbox Code Playgroud)
使用“半偶数”舍入方法,3084.5 舍入为 3084:
jshell> new java.math.BigDecimal("3084.5").setScale(0, java.math.RoundingMode.HALF_EVEN)
$13 ==> 3084
Run Code Online (Sandbox Code Playgroud)
但 3084.51 四舍五入为 3085:
jshell> new java.math.BigDecimal("3084.51").setScale(0, java.math.RoundingMode.HALF_EVEN)
$13 ==> 3085
Run Code Online (Sandbox Code Playgroud)
为什么数字会1影响舍入?它超出了5舍入操作期间应考虑的最后一位有效数字 ( ),对吧?
根据 JavaDoc RoundingMode.HALF_EVEN:
舍入模式向{@literal“最近邻居”}舍入,除非两个邻居等距,在这种情况下,向偶数邻居舍入。
0这意味着,使用您在中设置的比例.setScale()(意味着您想要 0 位小数):
3084.5与3084和等距3085,因此它将是偶数邻居(因此3084是偶数,而不是3085奇数)。3084.51不是等距的,它比 更0.01接近,因此它将是最近邻居。30853084| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |