Ruby-数学运算

Ruby-数学运算,ruby,math,Ruby,Math,几分钟前我试过简单的数学运算 <%=((3+2+1)/100).round(8)%> 结果是0.06,但是上面的ruby代码的结果是0.0。我希望结果应该是0.060000 为什么不呢? 谢谢 是0,因为除法是整数。试一试 (3+2+1)/100.0 您可以看到,如果/的两个参数都是整数,则除法的结果是整数(整个部分)。如果至少有一个参数是浮点,则结果也是浮点。只涉及整数数据的操作是在整数中完成的(然后6/100是0)。稍后将0转换为浮点(通过round)不会使您返回已丢弃的

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

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

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

为什么不呢? 谢谢

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

(3+2+1)/100.0

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

只涉及整数数据的操作是在整数中完成的(然后
6/100
0
)。稍后将
0
转换为浮点(通过
round
)不会使您返回已丢弃的小数部分


将任意一个值更改为float(例如,
3.0
),您就完成了。

可怕的整数算术再次攻击

计算((3+2+1)/100)时,由于所有操作数都是整数,Ruby使用整数算术而不是浮点算术


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

另一个选项是fdiv。6.fdiv(100)#=>0。06@steenslag:我甚至不认识鲁比。。。总之:)我的答案在我所知道的所有语言中都是正确的:)@Armen Tsirunyan:听说过Perl、awk、Haskell吗?;-)@乌杜尔贡戈:是的,我听说过,但我不认识他们
(3+2+1)/100.0