2014-03-26 74 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) %>