Ruby拒绝正确划分

时间:2009-09-19 07:27:03

标签: ruby

我只是试图获得一个百分比。

irb(main):001:0> (25 / 50) * 100
=> 0

这应该绝对等于50,正如我的计算器所证实的那样(将相同的等式复制并粘贴到gcalc中)。为什么Ruby拒绝这样做?

2 个答案:

答案 0 :(得分:28)

正在进行整数除法。

基本上,25是一个整数(整数),因此是50,所以当你将一个除以另一个时,它会给你另一个整数。

25 / 50 * 100 = 0.5 * 100 = 0 * 100 = 0

更好的方法是首先乘以,然后除。

25 * 100 / 50 = 2500 / 50 = 50

您还可以通过指定小数点显式使用浮点运算:

25.0 / 50.0 * 100 = 0.5 * 100 = 50

答案 1 :(得分:9)

因为你将一个整数除以一个整数,所以结果会在乘以100之前被截断为整数(0.5 - > 0)。

但这有效:

>> (25 / 50) * 100
=> 0
>> (25.0 / 50) * 100
=> 50.0