【发布时间】:2017-10-13 19:36:17
【问题描述】:
基于this stackoverflow post,我希望以下打印出 0.59 而不是 0.60。
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double toFormat = 0.6;
DecimalFormat formatter = new DecimalFormat("########0.00");
formatter.setRoundingMode(RoundingMode.DOWN);
System.out.println(formatter.format(toFormat)); // 0.60
}
}
0.60 最接近的浮点表示是 0.59999999999999997779553950749686919152736663818359375,低于 0.6。在 Java 8 中将 DecimalFormat 设置为 RoundingMode.DOWN,为什么不将其向下舍入为 0.59?
【问题讨论】:
标签: java floating-point decimalformat