为什么除以1.8不起作用,但乘以(5.0 / 9)确实有效?

时间:2014-01-15 04:26:28

标签: ruby floating-point

我正在测试一个简单的程序,使用Ruby将华氏温度转换为摄氏温度。

此代码在终端返回36.999999999。

def ftoc(far)
    return (far-32)/1.8
end

ftoc(98.6)

此代码返回37。

def ftoc(far)
    return (far-32)*(5.0/9)
end

ftoc(98.6)

谁能告诉我为什么?谢谢!

1 个答案:

答案 0 :(得分:4)

您使用的数字类型称为浮点数。

通常,任何浮点算术运算都会引入舍入误差。如果以不同的方式计算两个浮点结果,则不能指望两个浮点结果完全相等;你必须对小错误有一定的容忍度。