【发布时间】:2016-02-18 00:00:11
【问题描述】:
有人能解释一下为什么这里乘以 100 得到的结果不太准确,而乘以 10 两次得到的结果更准确吗?
± % sc
Loading development environment (Rails 3.0.1)
>> 129.95 * 100
12994.999999999998
>> 129.95*10
1299.5
>> 129.95*10*10
12995.0
【问题讨论】:
-
很可能是由于浮点数的二进制表示。我假设你不能在 base 2 中准确地写 129.95。
-
有什么线索可以解释为什么这不会发生在我身上?我试图证明这一点,我将上面的 129.95 * 100 输入到 IRB 中,我意外地得到了正确的答案。
-
回答我自己的问题 - 似乎 Float#to_s 回合。这样做有效: printf("%.50f", 129.95 * 100)
标签: ruby floating-point