Відповіді:
Це робить ціле ділення. Ви можете зробити одне з чисел a 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
модуль рубіну .
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
на 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
повертає результат обчислення з методу, оскільки останнім виразом у виклику методу є повернене значення.