1

我需要通过将两个单独的计数相除来计算一些 % 值。我得到了类的计数值是fixnum。但是,当我将它们分开时,无论计数值是多少,它都会向我显示 0,

<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask/aT)*.to_f %>

这里最后一个结果显示 0。

4

4 回答 4

4

您可以使用两条不同的线来获取实际值。

    <% 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 
于 2014-03-26T09:21:26.170 回答
1

现在,您得到了该除法的正确答案0,因为您将 2 个作为整数的数字相除,因此您将得到一个整数答案。

要从除法中获得十进制答案,您需要将它们转换为浮点数,然后进行除法。

dueTask.to_f/aT.to_f

你的代码最终会是这样的:

<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask.to_f/aT.to_f) %>
于 2014-03-26T09:19:02.113 回答
1

您应该在除法之前将它们转换为浮点数:

(dueTask.to_f/aT.to_f)

否则你只会得到除法的整数部分,0在这种情况下。

于 2014-03-26T09:17:07.327 回答
1

你这样做的方式是对整数进行除法,所以结果是一个整数。即使您将其转换为浮点数,您也只需转换结果(在这种情况下为 0)。

因此,您需要将两个整数中的至少一个转换为浮点数:

<% dueTask = 12 %> 
<% aT = 16 %> 
<%= (dueTask.to_f/aT) %>
于 2014-03-26T09:17:14.297 回答