Ruby - нельзя делить со значениями fixnum
Мне нужно рассчитать некоторые значения%, разделив два отдельных числа. Я получил значение счетчиков, которое является классом fixnum. Но в то время как я собираюсь разделить их, он показывает мне 0, независимо от значения счетчика,
<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask/aT)*.to_f %>
Здесь Последний результат, показывающий 0.
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
Прямо сейчас вы получаете правильный ответ на это разделение 0
потому что вы делите 2 числа, которые действуют как целое число, и, следовательно, вы получите целочисленный ответ.
Чтобы получить десятичный ответ от деления, вам нужно преобразовать их во всплывающее, а затем выполнить деление.
dueTask.to_f/aT.to_f
Ваш код будет выглядеть так:
<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask.to_f/aT.to_f) %>
Вы должны преобразовать их в float перед делением:
(dueTask.to_f/aT.to_f)
в противном случае вы получите только целую часть деления, которая 0
в этом случае.
То, как вы это делали, деление делалось на целое число, поэтому результатом является целое число. Даже если вы конвертируете его в число с плавающей точкой, вы просто конвертируете результат (в данном случае 0).
Поэтому вам нужно преобразовать хотя бы одно из двух целых чисел в число с плавающей точкой:
<% dueTask = 12 %>
<% aT = 16 %>
<%= (dueTask.to_f/aT) %>