Вы можете сделать это с помощью оператора modulo
.
(x + (0.05 - (x % 0.05))).round(2)
Если x = 1234,56, возвращается 1234,6
Я наткнулся на этот ответ, потому что я пишу калькулятор на основе Ruby, и он использовал библиотеку Ruby's Money для выполнения всех финансовых расчетов. Объекты Ruby Money не имеют тех же функций округления, что и Integer или Float, но они могут возвращать остаток (например, по модулю, %
).
Следовательно, используя Ruby Money, вы можете округлить объект Money до ближайших 25 долларов с помощью следующего:
x + (Money.new(2500) - (x % Money.new(2500)))
Здесь, если x = $ 1234,45 (<# Деньги дробные: 123445 валюта: доллар США>), он вернет $ 1250,00 (#
)
ПРИМЕЧАНИЕ. Нет необходимости округлять объекты Ruby Money, поскольку эта библиотека позаботится об этом за вас!