Ответы:
Это делает целочисленное деление. Вы можете сделать одно из чисел а 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.
Изменение 5To 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вернул бы результат вычисления из метода, поскольку последнее выражение в вызове метода является возвращаемым значением.