Ответы:
Это делает целочисленное деление. Вы можете сделать одно из чисел а Float
, добавив .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
Ответ лучше , если вы разделив две переменные , которые содержат целые числа, например a.to_f / b
. Если вы буквально делите два жестко запрограммированных целых числа (что, вероятно, странно), тогда использование 9.0 / 5
подойдет.
Это делает целочисленное деление. Вы можете использовать, to_f
чтобы заставить вещи в режиме с плавающей запятой:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
Это также работает, если ваши значения являются переменными, а не литералами. Преобразование одного значения в число с плавающей точкой является достаточным для приведения всего выражения к арифметике с плавающей запятой.
Есть также Numeric#fdiv
метод, который вы можете использовать вместо:
9.fdiv(5) #=> 1.8
Вы можете включить mathn
модуль ruby .
require 'mathn'
Таким образом, вы сможете сделать деление в обычном режиме.
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
Таким образом, вы получаете точное деление (класс Rational), пока не решите применить операцию, которая, например, не может быть выражена как рациональная Math.sin
.
Изменение 5
To 5.0
. Вы получаете целочисленное деление.
Fixnum # to_r здесь не упоминается, он появился с версии 1.9. Он превращает Fixnum в рациональную форму. Ниже приведены примеры его использования. Это также может дать точное деление, если все используемые числа являются Fixnum.
a = 1.to_r #=> (1/1)
a = 10.to_r #=> (10/1)
a = a / 3 #=> (10/3)
a = a * 3 #=> (10/1)
a.to_f #=> 10.0
Пример, в котором число с плавающей запятой, работающее с рациональным числом, покрывает результат с плавающей точкой.
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; end
вернул бы результат вычисления из метода, поскольку последнее выражение в вызове метода является возвращаемым значением.