我几分钟前尝试过简单的数学运算
<%=((3+2+1)/100).round(8)%>
结果 0.06 ,但上面的ruby代码的结果是 0.0 。我希望结果应该是0.060000。
为什么不呢? 感谢
答案 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/100
为0
)。将0
转换为稍后浮动(按round
)并不会使您退回已经丢弃的小数部分。
将其中任何一个值更改为浮点值(例如3.0
),您就完成了。