Java大十进制一半甚至Bug?

时间:2019-02-28 20:20:26

标签: java rounding bigdecimal

我正在尝试专门使用此值

new BigDecimal("23.025").setScale(2, RoundingMode.HALF_EVEN);

输出为23.02,但应为23.03。是一个错误吗?

出于好奇DecimalFormat("#####0,00");也不起作用

还有其他建议吗?

1 个答案:

答案 0 :(得分:10)

RoundingMode#HALF_EVEN JavaDoc

  

舍入模式向“最近的邻居”舍入除非两者   邻居是等距的,在这种情况下,向偶数取整   邻居

在您的情况下,even的邻居是02
JavaDoc很重要!经常阅读。
对于RoundingMode,可以找到here(Java 8版本)。