例如:

9 / 5  #=> 1

但我以为是1.8。我怎样才能得到正确的十进制(非整数)结果?为什么返回1呢?


当前回答

它在做整数除法。你可以通过添加.0使其中一个数字为Float:

9.0 / 5  #=> 1.8
9 / 5.0  #=> 1.8

其他回答

它在做整数除法。你可以通过添加.0使其中一个数字为Float:

9.0 / 5  #=> 1.8
9 / 5.0  #=> 1.8

它在做整数除法。你可以使用to_f强制进入浮点模式:

9.to_f / 5  #=> 1.8
9 / 5.to_f  #=> 1.8

如果您的值是变量而不是字面量,这也适用。将一个值转换为浮点数足以将整个表达式强制转换为浮点算术。

你也可以使用Numeric#fdiv方法:

9.fdiv(5)  #=> 1.8

你可以通过irb查询:

$ irb
>> 2 / 3
=> 0
>> 2.to_f / 3
=> 0.666666666666667
>> 2 / 3.to_f
=> 0.666666666666667

将5更改为5.0。得到整数除法。