Подтвердить что ты не робот

Как колпачок и круглый номер в рубине

Я хотел бы "укусить" число в Ruby (on Rails).

Например, у меня есть в результате функции float, но мне нужен int.

У меня есть очень конкретные инструкции, вот несколько примеров:

Если я получаю 1.5, я хочу 2, но если я получу 2.0, я хочу 2 (а не 3)

Выполнение number.round(0) + 1 не будет работать.

Я мог бы написать функцию для этого, но я уверен, что он уже существует.

Если, тем не менее, его не существует, где я должен создать свою функцию cap?

4b9b3361

Ответ 1

Попробуйте ceil:

 1.5.ceil => 2
 2.0.ceil => 2

Ответ 2

Как насчет number.ceil?

Это возвращает наименьшее целое число, большее или равное числу.

Будьте осторожны, если вы используете это с отрицательными номерами, убедитесь, что он делает то, что вы ожидаете:

1.5.ceil      #=> 2
2.0.ceil      #=> 2
(-1.5).ceil   #=> -1
(-2.0).ceil   #=> -2

Ответ 3

.ceil хорош, но помните, что даже наименьшее значение в float вызовет это:

a = 17.00000000000002
17.0
a.ceil
18

Ответ 4

Используйте Числовой # ceil:

irb(main):001:0> 1.5.ceil
=> 2
irb(main):002:0> 2.0.ceil
=> 2
irb(main):003:0> 1.ceil
=> 1

Ответ 5

float.ceil - это то, что вы хотите для положительных чисел. Обязательно рассмотрите поведение для отрицательных чисел. То есть, вы хотите, чтобы -1.5 "закрывал" до -1 или -2?