例如:
9 / 5 #=> 1
但我以为是1.8。我怎样才能得到正确的十进制(非整数)结果?为什么返回1呢?
例如:
9 / 5 #=> 1
但我以为是1.8。我怎样才能得到正确的十进制(非整数)结果?为什么返回1呢?
当前回答
你也可以使用Numeric#fdiv方法:
9.fdiv(5) #=> 1.8
其他回答
将5更改为5.0。得到整数除法。
你可以通过irb查询:
$ irb
>> 2 / 3
=> 0
>> 2.to_f / 3
=> 0.666666666666667
>> 2 / 3.to_f
=> 0.666666666666667
这里没有提到Fixnum#to_r,它是从ruby 1.9开始引入的。它将Fixnum转化为理性形式。下面是它的用法示例。这也可以给出精确的除法,只要所有使用的数字都是Fixnum。
a = 1.to_r #=> (1/1)
a = 10.to_r #=> (10/1)
a = a / 3 #=> (10/3)
a = a * 3 #=> (10/1)
a.to_f #=> 10.0
对有理数操作的浮点数将结果转换为浮点数的示例。
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
它在做整数除法。你可以通过添加.0使其中一个数字为Float:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
你也可以使用Numeric#fdiv方法:
9.fdiv(5) #=> 1.8