Java十进制取整错误?
似乎与Java十进制取整错误?,java,decimalformat,Java,Decimalformat,似乎与DecimalFormat舍入数字的方式不一致 new DecimalFormat(“0.0”,新的DecimalFormatSymbols(Locale.US))。格式(数字) 下面是针对一些不同的number值返回的内容 0.05返回0.0 0.15返回0.2 0.25返回0.2 0.35返回0.4 0.45返回0.4 为什么会发生这种情况?更重要的是,如何获得正确的值(0.25舍入时为0.3,0.45舍入时为0.5)?Javadoc声明: DecimalFormat提供在Roun
DecimalFormat
舍入数字的方式不一致
new DecimalFormat(“0.0”,新的DecimalFormatSymbols(Locale.US))。格式(数字)
下面是针对一些不同的number
值返回的内容
- 0.05返回0.0
- 0.15返回0.2
- 0.25返回0.2
- 0.35返回0.4
- 0.45返回0.4
HALF_EVEN
正是您所注意到的:当它正好位于两个数字的中间时,它更喜欢舍入到最近的偶数。(这有很多原因,主要是因为它不会平均向上或向下偏移,从而平衡舍入误差。)
只需调用setRoundingMode(RoundingMode.HALF\u UP)
即可了解您描述的行为