为什么Scala无法获得Double上简单添加的精确答案?

时间:2016-10-28 03:18:49

标签: scala precision

情况可以通过以下简单的行重现:

Scala version 2.11.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_66).

scala> 0.2+0.7
res0: Double = 0.8999999999999999

那背后的原因是什么? 如果一个中间过程产生一个,我怎么能测试答案才是正确的 不精确的结果?

感谢。

1 个答案:

答案 0 :(得分:2)

这个问题必须在数学如何与我们的处理器一起工作,而不是Scala。

Scala中,

$ scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions for evaluation. Or try :help.

scala> 0.2 + 0.7
res0: Double = 0.8999999999999999

的Python,

$ python
Python 2.7.12 (default, Jun 29 2016, 14:05:02) 
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> 0.2 + 0.7
0.8999999999999999

Node.js的

$ node
> 0.2 + 0.7
0.8999999999999999