为什么我会因减法而收到无益的结果?

时间:2013-07-20 02:19:55

标签: java double calculator precision

double foo = 3;
double bar = 2.1;

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

输出:

0.8999999999999999

为什么呢?这是一个Java玩笑,这对凡人来说是不可理解的吗?

1 个答案:

答案 0 :(得分:4)

这不是开玩笑。 It is floating-point precision error problem.这个问题的主要要点是浮点数用2表示而不是10表示,doubles的精度不是任意的。

如果您需要精确度,可以使用BigDecimal class: