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