Java DecimalFormat HALF_UP格式的double值不正确

时间:2020-03-09 03:06:54

标签: java decimalformat

具有 RoundingMode.HALF_UP 的DeciamlFormat 不能正确使用双精度值

double value = 2.315;
double value2 = 2.325;
DecimalFormat df = new DecimalFormat("#.00");

System.out.println("double value1 = " + value);
System.out.println("double value2 = " + value2);
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(df.getRoundingMode() + " value = " + df.format(value));
System.out.println(df.getRoundingMode() + " value2 = " + df.format(value2));
df.setRoundingMode(RoundingMode.HALF_EVEN);
System.out.println(df.getRoundingMode() + " value = " + df.format(value));
System.out.println(df.getRoundingMode() + " value2 = " + df.format(value2));

上面的代码生成下面的结果, HALF_UP 2.315d结果与HALF_EVEN相同。

double value1 = 2.315
double value2 = 2.325
HALF_UP value = 2.31  // Why the result is not 2.32?
HALF_UP value2 = 2.33
HALF_EVEN value = 2.31
HALF_EVEN value2 = 2.33

但是具有RoundingMode.HALF_UP格式“ 2.315 float value” 的DeciamlFormat将是正确的值2.32。
我使用JDK 1.8.0_131版本。

0 个答案:

没有答案
相关问题