3个浮点加起来为1.0和0.0,具体取决于括号

时间:2016-03-01 17:51:23

标签: scala floating-point

我刚刚学习浮点数并且很难理解我应该如何找到3个双值(让我们说a,b和c)以便:

(a + b)+ c == 1.0和a +(b + c)== 0.0

我已经阅读了几个网页,并观看了有关浮点数的视频,但我不知道应该如何找到这样的内容。我尝试了不同的数字,但结果只有很小的差异。 e.g。

(1.1 - 0.2)+ 0.1 = 1.0000000000000002

1.1 +( - 0.2 + 0.1)= 1.0

1 个答案:

答案 0 :(得分:-1)

在一般情况下,您只能将浮动操作的结果与您信任的误差范围进行比较。

例如,使用Scalactic库:

import orc.scalactic.TripleEquals._
import orc.scalactic.Tolerance._

(1.1 -   0.2) + 0.1  === 1.0 +- 1.0e-6  // true
 1.1 + (-0.2  + 0.1) === 1.0 +- 1.0e-6  // true

如果您不想这样,则需要使用BigDecimal精确数学。