问题是那
double是不精确的。它使用64位代表十进制数;有些位用于数字部分,有些位用于指数,例如,许多看似简单的十进制数字不能用这种方式准确表示
0.1。有关更多信息,请参见此Wiki文章。
解决该问题的一种方法是使用显示数字
DecimalFormat,该数字可以四舍五入以用于演示目的。这是一些示例代码:
public static void main(String[] args) { DecimalFormat decimalFormat = new DecimalFormat("#0.000"); double d = 1 - .9; // one way to get a repeating decimal floating point number System.out.println(d); System.out.println(decimalFormat.format(d));}输出:
0.099999999999999980.100



