由Ruby float truncate混淆

Tim*_*ain 1 ruby floating-point

Float上的truncate方法显然将float截断为整数.那么这里发生了什么:

>> 14820.truncate
=> 14820
>> (148.2 * 100)
=> 14820.0
>> 14820.0.truncate
=> 14820
>> (148.2 * 100).truncate
=> 14819
Run Code Online (Sandbox Code Playgroud)

为什么最后的计算输出不是14820?

Nik*_*bak 5

浮点舍入错误,与之无关truncate.试试这个

 (148.2 * 100) < 14820
Run Code Online (Sandbox Code Playgroud)

它回来了true.形象地说,你得到数字148.199999999而不是148.2,因为148.2不能用浮点数精确表示.