Ruby - 数学运算

时间:2011-09-21 13:22:46

标签: ruby math

我几分钟前尝试过简单的数学运算

<%=((3+2+1)/100).round(8)%>

结果 0.06 ,但上面的ruby代码的结果是 0.0 。我希望结果应该是0.060000。

为什么不呢? 感谢

3 个答案:

答案 0 :(得分:6)

(3+2+1)/100 

0,因为除法是整数。尝试

(3+2+1)/100.0

你看,如果/的两个参数都是整数,则除法的结果是整数(整个部分)。如果至少有一个参数是浮点数,那么结果也是浮点数。

答案 1 :(得分:4)

可怕的整数算术再次攻击!

当你计算((3 + 2 + 1)/ 100)时,因为所有的操作数都是整数,所以Ruby使用整数运算而不是浮点运算。

如果你做7/100,它也会返回0,因为它向下舍入到最接近的整数,即0。

答案 2 :(得分:2)

仅涉及整数数据的操作以整数形式完成(然后6/1000)。将0转换为稍后浮动(按round)并不会使您退回已经丢弃的小数部分。

将其中任何一个值更改为浮点值(例如3.0),您就完成了。