0
public static void main(String[] args) {
    double test = 1;
    int tick = 0;
    while(tick < 10){
        System.out.println(test += 1.4);
        tick++;
    }
}

结果:

2.4
3.8
5.199999999999999
6.6
8.0
9.4
10.8
12.200000000000001
13.600000000000001
15.000000000000002

我不明白为什么它会得到这些奇怪的十进制数字,比如 5.19 而不是 5.2 这是为什么?有没有办法让它像我的计算器一样显示为 5.2?提前致谢。貂

4

1 回答 1

1

这只是 double 的工作方式。它并不完美。您看到的是舍入错误,这是由于并非所有数字都可以准确地以二进制表示。

如果你想追求精确,你应该尝试 BigDecimal。

于 2013-08-01T10:17:07.643 回答