为什么55.0 / 1.1等于49.99999999999999?

时间:2012-08-09 03:57:09

标签: ruby floating-point

  

可能重复:
  Why 6.84 - 3.6 == 3.2399999999999998

通过扩展,为什么49.99999999999999 * 1.1等于55.0?

我认为这与浮点运算有关,但是为什么会出现这么简单的总和,以及为什么对于乘法情况也是如此,我感到有些困惑。

2 个答案:

答案 0 :(得分:4)

你是对的,它完全与浮点运算有关。许多十进制数只能表示二进制的一定精度,这就是您在此处看到行为的原因。这不仅限于红宝石 - 我建议阅读What every computer scientist should know about floating point arithmetic

答案 1 :(得分:3)

您的计算机使用二进制,而不是十进制。数字1.1不能完全以有限二进制表示来表示,因此它必然是近似值。