关于java:这个数学有什么特别之处?

What is special about this math?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Java floating point arithmetic

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

1
2
3
4
5
double a = 0.9;
double b = 1.0;
double c = a - b;
System.out.println(c);
>>-0.09999999999999998


浮点精度对计算机来说很困难。请参阅本文并保留Java中的双倍精度

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


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


任何两个值之间都有无穷多的数字。

任何计算机上的内存位都是有限的。所以我们选择的任何表示浮点数的方法都不会是精确的。


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

尝试阅读每个程序员应该知道的关于浮点运算的内容。


值0.9不能以二进制形式精确表示。