2014-03-26 75 views
1

我需要通过除以两个单独的计数来计算一些%值。我得到了班级的计数值是fixnum。但是,当我要他们分开,这显示了我什么0的计数值,红宝石 - 不能用fixnum值分割

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

这里最后的结果显示为0。

+0

中的任何一个操作数应该是浮子式,运算返回漂浮型。 –

+0

duetask.to_f/aT =>浮点类型的一些值。 –

回答

4

你可以为了得到实际值使用两个不同的线路。

<% dueTask = 12 %> 
    <% aT = 16 %> 
    <% result = dueTask/aT.to_f %> 
    <%= result %> 

在IRB您可以通过检查该获得的价值:

dueTask = 12 
aT = 16 
dueTask/aT.to_f 

但是当你必须拿出结果HTML这种技术可能无法正常工作。变量是Fixnum对象的类型(可以通过在IRB壳下面的命令检查它)

dueTask.class 

输出将是

#=> Fixnum 
+1

,谢谢兄弟,我得到了我的解决方案。事情是我需要将fixnum转换为浮动。 – sukanta

+1

这有点误导。在你的情况下,你正在用一个浮点数来分割一个Fixnum。 –

+0

@CedricH。任何一个操作数应该是float类型,算术操作返回float类型。答案没有误导。 –

1

应该转换其分立前飘起:

(dueTask.to_f/aT.to_f) 

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

1

你这样做的方式是用整数来完成,所以结果是一个整数。即使你将它转换为浮点数,你只需要转换结果(在这种情况下为0)。

所以,你需要两个整数中的至少一个转换成浮动:

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

现在你得到正确的答案,该部门0,因为你将2号充当整数,因此你会得到一个整数的答案。

要得到一个十进制答案从你需要将它们转换为浮点数然后再进行除法。

dueTask.to_f/aT.to_f 

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

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