通过扩展,为什么 49.99999999999999 * 1.1 等于 55.0?
我认为这与浮点算术有关,但我有点困惑为什么会发生这种简单的求和,以及为什么乘法的情况也是如此。
通过扩展,为什么 49.99999999999999 * 1.1 等于 55.0?
我认为这与浮点算术有关,但我有点困惑为什么会发生这种简单的求和,以及为什么乘法的情况也是如此。
你是对的,这完全与浮点运算有关。许多十进制数字只能以一定的精度表示为二进制,这就是您在此处看到行为的原因。这不仅限于 ruby - 我建议阅读每个计算机科学家都应该知道的关于浮点运算的知识。
您的计算机以二进制而不是十进制工作。数字 1.1 不能以有限的二进制表示形式精确表示,因此它必然是一个近似值。