2013-02-06 2 views
0

Я довольно новыми для Rails, я передаю 2 переменные на вид, на мой контроллер у них определены какчисла с плавающей запятой в ERB/​​Rails

@correct = 5 
@total = 40 

на мой взгляд, я пытаюсь отметить они выглядят следующим образом:

Score = <%[email protected]%>/<%[email protected]%> = <%=(@score/@total)%> 

Он выводит 0 для деления. Нужно ли мне явно определять это уравнение для вывода float или что-то еще? Как я могу получить его на выход 0,125 вместо 0

Спасибо ребят

+0

В Ruby, когда вы делаете арифметические операции с целыми числами, вы получите целые ответы. И если вы хотите получить поплавок или десятичное число, то по крайней мере один из делителей или дивидендов должен быть десятичным/плавающим. –

ответ

2

Решают хотите ли вы использовать @correct или @score. Кроме того, чтобы использовать двойное деление вместо умножения целого @score на 1.0:

<%=(1.0 * @score/@total)%> 

Или же бросить @score плавать:

<%=(@score.to_f/@total)%> 
+0

Спасибо, у меня было немного промаха в мозге там re: var name! :) – DexCurl

1

Вам необходимо явно преобразовать целые числа в поплавки:

1.9.3p0 :001 > a = 5 
=> 5 
1.9.3p0 :002 > b = 40 
=> 40 
1.9.3p0 :003 > a/b 
=> 0 
1.9.3p0 :005 > (a/b).to_f 
=> 0.0 
1.9.3p0 :006 > a.to_f/b.to_f 
=> 0.125 

В вашем случае:

Score = <%[email protected]%>/<%[email protected]%> = <%=(@score.to_f/@total.to_f)%> 
+1

на самом деле кастинг просто '@ score' хватит –

Смежные вопросы