Ruby - 不能与fixnum值分开

时间:2014-03-26 09:15:27

标签: ruby math fixnum

我需要通过划分两个单独的计数来计算一些%值。我得到了计数值,类是fixnum。但是,虽然我要划分它们,但无论计数值是多少,它都显示0,

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

此处最后的结果显示为0.

4 个答案:

答案 0 :(得分: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 

答案 1 :(得分:1)

你应该在分裂之前将它们转换为浮动:

(dueTask.to_f/aT.to_f)

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

现在你正在得到该分区0的正确答案,因为你正在划分2个作为整数的数字,因此你会得到一个整数答案。

要从分部获得十进制答案,您需要将它们转换为float,然后进行除法。

dueTask.to_f/aT.to_f

您的代码最终会像这样:

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