double foo = 3;
double bar = 2.1;
System.out.println(foo - bar + "");
输出:
0.8999999999999999
为什么呢?这是一个Java玩笑,这对凡人来说是不可理解的吗?
答案 0 :(得分:4)
这不是开玩笑。 It is floating-point precision error problem.这个问题的主要要点是浮点数用2表示而不是10表示,doubles
的精度不是任意的。
如果您需要精确度,可以使用BigDecimal class: