为什么红宝石像这样?

时间:2014-07-05 17:41:23

标签: ruby floating-point integer

您好我有以下问题:

当我把(1 + 7/100)放在红宝石中时它会给出1.

这很奇怪,因为通常这就是我计算Excel增加7%的方法。

但是当我把(1 + 7.0 / 100)它给我1.07时,这是我预期的正确答案。

为什么ruby这样做?你如何在ruby的计​​算中解决这个问题?

1 个答案:

答案 0 :(得分:2)

这与舍入无关。

Ruby在float上的分割方式与在整数上的分割方式不同。

如果除以整数,则总会得到整数结果。

如果使用浮点数(或整数和浮点数的混合)进行除法,则总会得到浮点结果。


也要记住您的操作顺序。 Ruby会在处理添加之前处理该部门。

7/100 = 0所以1+0 = 1

7.0/100 = 0.07所以1+0.07 = 1.07