这个数学有什么特别之处?

时间:2011-08-04 13:59:45

标签: java math

  

可能重复:
  Java floating point arithmetic

Java中的这个双重数学有什么特别之处?我希望.9 - 1的答案是-0.1,但是响应是-0.09999999999999998

double a = 0.9;
double b = 1.0;
double c = a - b;
System.out.println(c);
>>-0.09999999999999998

5 个答案:

答案 0 :(得分:2)

另一个关于双打精度的问题。 双打精度有限。并非所有数字都能准确表示!

答案 1 :(得分:2)

计算机难以实现浮点精度。有关详细信息,请参阅this articleRetain precision with double in Java

对于准确的浮点运算,请使用BigDecimal

答案 2 :(得分:1)

值0.9无法以二进制形式精确表示。

答案 3 :(得分:1)

双是不确切的。这是可以用double表示的最接近的数字。

尝试阅读what every programmer should know about floating point arithmetic.

答案 4 :(得分:1)

任意两个值之间有无数个数字。

任何计算机上都有有限数量的内存位。因此,我们选择表示浮点数的任何方式都不会是精确的。