Сплит float в целое и десятичное числа в Ruby

Если у меня есть float как 3.75, как я могу разбить его на целое число 3 и float 0.75?

Должен ли я преобразовать float в строку, а затем разделить строку на ".", а затем снова преобразовать части в целые числа и поплавки или есть более элегантный или "правильный" способ сделать это?

Ответ 1

Как уже упоминалось, вы можете использовать 3.75.to_i для получения целого числа. Альтернативный способ получения остатка - использовать оператор %, например. 3.75 % 1

Ответ 2

Вы можете использовать NumeriС# divmod с аргументом 1 для этого:

Возвращает массив, содержащий коэффициенты и модуль, полученные путем деления num на числовые.

a.divmod 1
=> [3, 0.75]

Если вы хотите получить точное значение, этот метод доступен для BigDecimal:

3.456.divmod 1
=> [3, 0.45599999999999996]

require 'bigdecimal'
div_mod = BigDecimal("3.456").divmod 1
[div_mod[0].to_i, div_mod[1].to_f]
=> [3, 0.456]