double foo = 3;
double bar = 2.1;
System.out.println(foo - bar + "");
输出:
0.8999999999999999
为什么?这是一些普通人无法理解的 Java 笑话吗?
double foo = 3;
double bar = 2.1;
System.out.println(foo - bar + "");
输出:
0.8999999999999999
为什么?这是一些普通人无法理解的 Java 笑话吗?
这不是玩笑。 这是浮点精度错误问题。 这个问题的主要要点是浮点数以 2 为基数而不是 10 表示,并且 的精度doubles
不是任意的。
如果你想要精确,你可以使用BigDecimal类: