我需要通过将两个单独的计数相除来计算一些 % 值。我得到了类的计数值是fixnum。但是,当我将它们分开时,无论计数值是多少,它都会向我显示 0,
<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask/aT)*.to_f %>
这里最后一个结果显示 0。
您可以使用两条不同的线来获取实际值。
<% dueTask = 12 %>
<% aT = 16 %>
<% result = dueTask/aT.to_f %>
<%= result %>
在 IRB 中,您可以通过检查以下内容来获取值:
dueTask = 12
aT = 16
dueTask/aT.to_f
但是当您必须在 HTML 中显示结果时,这种技术可能不起作用。变量是 Fixnum 类型(您可以在 IRB shell 中通过以下命令检查它)
dueTask.class
输出将是
#=> Fixnum
现在,您得到了该除法的正确答案0
,因为您将 2 个作为整数的数字相除,因此您将得到一个整数答案。
要从除法中获得十进制答案,您需要将它们转换为浮点数,然后进行除法。
dueTask.to_f/aT.to_f
你的代码最终会是这样的:
<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask.to_f/aT.to_f) %>
您应该在除法之前将它们转换为浮点数:
(dueTask.to_f/aT.to_f)
否则你只会得到除法的整数部分,0
在这种情况下。
你这样做的方式是对整数进行除法,所以结果是一个整数。即使您将其转换为浮点数,您也只需转换结果(在这种情况下为 0)。
因此,您需要将两个整数中的至少一个转换为浮点数:
<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask.to_f/aT) %>