-1
double foo = 3;
double bar = 2.1;

System.out.println(foo - bar + "");

输出:

0.8999999999999999

为什么?这是一些普通人无法理解的 Java 笑话吗?

4

1 回答 1

4

这不是玩笑。 这是浮点精度错误问题。 这个问题的主要要点是浮点数以 2 为基数而不是 10 表示,并且 的精度doubles不是任意的。

如果你想要精确,你可以使用BigDecimal类:

于 2013-07-20T02:22:12.887 回答