似乎与DecimalFormat
舍入数字的方式存在一些不一致。
new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.US)).format(number)
以下是针对某些不同的number
值返回的内容。
为什么会这样?更重要的是,我如何得到正确的值(当舍入0.25时舍入0.25和0.5时为0.3)?
答案 0 :(得分:4)
Javadoc声明:
DecimalFormat提供RoundingMode中定义的舍入模式以进行格式化。默认情况下,它使用RoundingMode.HALF_EVEN。
HALF_EVEN
正是你所注意到的:当它恰好位于两个数字之间时,它更喜欢四舍五入到最近的偶数。 (这有很多原因,主要是因为它不会平均向上或向下偏差,倾向于平衡舍入错误。)
只需针对您描述的行为致电setRoundingMode(RoundingMode.HALF_UP)
。