为什么eval('7/14')。to_f返回0.0?

时间:2018-09-04 07:10:47

标签: ruby

我必须评估字符串才能得到结果。例如,

eval('5*6.45').to_f # => 32.25

是预期的。

我为什么得到:

eval('7/14').to_f # => 0.0

而不是0.5?如何获得适当的价值?在我的游戏(GUI)中,我应该有14而不是14.0

2 个答案:

答案 0 :(得分:4)

eval('7/14')

相同
7/14

,它是0(整数除法)。将0转换为浮点数会导致浮点数为零,即0.0

如果您要写(即)

7.0/14

,您会得到理想的结果。

答案 1 :(得分:0)

这是因为7的(绝对值)小于14的(绝对值)。得到0。然后,转换为float的0为0.0。