Ответ 1
Попробуйте ceil:
1.5.ceil => 2
2.0.ceil => 2
Я хотел бы "укусить" число в Ruby (on Rails).
Например, у меня есть в результате функции float, но мне нужен int.
У меня есть очень конкретные инструкции, вот несколько примеров:
Если я получаю 1.5
, я хочу 2
, но если я получу 2.0
, я хочу 2
(а не 3
)
Выполнение number.round(0) + 1
не будет работать.
Я мог бы написать функцию для этого, но я уверен, что он уже существует.
Если, тем не менее, его не существует, где я должен создать свою функцию cap?
Попробуйте ceil:
1.5.ceil => 2
2.0.ceil => 2
Как насчет number.ceil
?
Это возвращает наименьшее целое число, большее или равное числу.
Будьте осторожны, если вы используете это с отрицательными номерами, убедитесь, что он делает то, что вы ожидаете:
1.5.ceil #=> 2
2.0.ceil #=> 2
(-1.5).ceil #=> -1
(-2.0).ceil #=> -2
.ceil хорош, но помните, что даже наименьшее значение в float вызовет это:
a = 17.00000000000002
17.0
a.ceil
18
Используйте Числовой # ceil:
irb(main):001:0> 1.5.ceil
=> 2
irb(main):002:0> 2.0.ceil
=> 2
irb(main):003:0> 1.ceil
=> 1
float.ceil - это то, что вы хотите для положительных чисел. Обязательно рассмотрите поведение для отрицательных чисел. То есть, вы хотите, чтобы -1.5 "закрывал" до -1 или -2?