#ruby-on-rails #ruby #floating-point
#ruby-on-rails #ruby #с плавающей запятой
Вопрос:
Я работаю с внешним API в приложении Ruby on Rails. Мне нужно отправить в эту компанию значения с плавающей запятой, но они принимают только такие значения, как 1.0
, 1.25
, 1.5
, 1.75
, и т.д. 2.0
У меня может быть значение типа 1.34
или 1.80
. В идеале мне нужно округлить их до ближайшего 0.25
. Каков наилучший способ добиться этого? если я это сделаю 1.34.round(0)
, это даст мне 1.0
значение ниже, чем мне нужно.
Спасибо!
Ответ №1:
(1.27 * 4).round / 4.0
#=> 1.25
Если вы собираетесь использовать его часто, было бы разумно исправить класс, чтобы упростить использование Float
:
class Float
def round_to_quarter
(self * 4).round / 4.0
end
end
1.27.round_to_quarter
#=> 1.25
1.52.round_to_quarter
#=> 1.5
1.80.round_to_quarter
#=> 1.75
1.88.round_to_quarter
#=> 2.0
Комментарии:
1. Честно говоря, это вопрос мнения, Динеш
Ответ №2:
Хотя решение Андрея будет работать, если вам не нравится, когда monkey исправляет основной класс ruby, также будет работать следующее
#x being the value
(x * 4).round / 4.0
Комментарии:
1. Это буквально то же
(self * 4).round / 4.0
самое, что и в моем примере, когда этоself
экземпляр Float 🙂2. Да, я абсолютно согласен с вами. Просто альтернатива. 🙂