ЗмістНатисність на посилання, щоб перейти до потрібного місця
У Ruby, коли ви ділите два цілі числа (Integer), результат теж буде цілим числом. Тому:
6 / 4
повертає 1, а не 1.5. Ruby просто відкидає дробову частину - це так зване цілочисельне ділення.
Чому так відбувається
- 6 і 4 - обидва об’єкти класу Integer.
- Оператор / між двома цілими числами повертає Integer, обрізаючи десяткову частину.
6.class # => Integer 4.class # => Integer 6 / 4 # => 1
Як отримати правильний результат з десятковою частиною
Варіантів кілька. Розглянемо по черзі.
Як отримати правильний результат з десятковою частиною:
6.0 / 4 # => 1.5 6 / 4.0 # => 1.5
Використовувати метод fdiv. Метод fdiv виконує ділення і завжди повертає Float, навіть якщо обидва числа цілі. Це зручно, коли потрібно точне дробове ділення без явного перетворення типу.
6.fdiv(4) # => 1.5
Явне перетворення типу (to_f). Метод to_f перетворює число на Float. Після цього ділення автоматично виконується як з числами з плаваючою комою, і результат теж буде Float. Також можна перетворювати дільник.
6.to_f / 4 # => 1.5
Якщо коротко:Цілочисельне ділення (Integer / Integer) обрізає дробову частину.Щоб отримати число з плаваючою комою (Float), потрібно:
- використати Float у діленні (6.0 / 4)
- або метод fdiv (6.fdiv(4))
Ще трохи прикладів:
# Цілочисельне ділення p 7 / 2 # => 3 # Ділення з Float p 7.0 / 2 # => 3.5 p 7 / 2.0 # => 3.5 p 7.fdiv(2) # => 3.5 p 7.to_f / 2 # => 3.5
Цей допис поки що не має жодних доповнень від автора/ки.