使用Java:
$ jshell
| Welcome to JShell -- Version 17.0.3
| For an introduction type: /help intro
使用"半偶数"四舍五入法,3084.5四舍五入到3084:
jshell> new java.math.BigDecimal("3084.5").setScale(0, java.math.RoundingMode.HALF_EVEN)
$13 ==> 3084
但是3084.51轮询到3085:
jshell> new java.math.BigDecimal("3084.51").setScale(0, java.math.RoundingMode.HALF_EVEN)
$13 ==> 3085
为什么数字1
会影响舍入?它超出了在舍入运算中应该考虑的最后一位有效数字(5
),对吗?
根据RoundingMode.HALF_EVEN
的JavaDoc:
舍入模式,向{@literal "最近邻居"}舍入,除非两个邻居相等,在这种情况下,向偶数邻居舍入。
这意味着,您在.setScale()
中设置了0
的比例(意味着您想要0个小数):
3084.5
与3084
和3085
的距离相等,因此它将是偶数邻居(因此3084
是偶数,而3085
是奇数)。3084.51
不是等距的,0.01
比3084
更接近3085
,因此它是最近的邻居。