Ruby 为什么55.0/1.1等于49.9999999999?

Ruby 为什么55.0/1.1等于49.9999999999?,ruby,floating-point,Ruby,Floating Point,可能重复: 从广义上讲,为什么49.999999999999*1.1等于55.0 我假设这与浮点运算有关,但我有点困惑,为什么这样简单的求和会出现这种情况,为什么乘法也是如此。您的计算机是二进制的,而不是十进制的。数字1.1不能用有限二进制表示法精确表示,因此它必须是近似值 你说得对,这完全与浮点运算有关。许多十进制数在二进制中只能以一定的精度表示,这就是您在这里看到这种行为的原因。这并不局限于ruby,我建议阅读。谢谢,我做了搜索,但找不到任何资源。是的,每个人都有相同的问题,但使用不同的数

可能重复:

从广义上讲,为什么49.999999999999*1.1等于55.0


我假设这与浮点运算有关,但我有点困惑,为什么这样简单的求和会出现这种情况,为什么乘法也是如此。

您的计算机是二进制的,而不是十进制的。数字1.1不能用有限二进制表示法精确表示,因此它必须是近似值

你说得对,这完全与浮点运算有关。许多十进制数在二进制中只能以一定的精度表示,这就是您在这里看到这种行为的原因。这并不局限于ruby,我建议阅读。

谢谢,我做了搜索,但找不到任何资源。是的,每个人都有相同的问题,但使用不同的数字:我已经有一段时间没有看到这样的东西了,所以谢谢你的链接!