Как заглавные и круглые числа в рубине - PullRequest
40 голосов
/ 19 мая 2009

Я бы хотел "заглушить" число в Ruby (на Rails).

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

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

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

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

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

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

Ответы [ 5 ]

78 голосов
/ 19 мая 2009

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

 1.5.ceil => 2
 2.0.ceil => 2
11 голосов
/ 09 мая 2012

.ceil - это хорошо, но помните, что даже самое маленькое значение в float приведет к этому:

a = 17.00000000000002
17.0
a.ceil
18
11 голосов
/ 19 мая 2009

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

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

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

1.5.ceil      #=> 2
2.0.ceil      #=> 2
(-1.5).ceil   #=> -1
(-2.0).ceil   #=> -2
6 голосов
/ 19 мая 2009

Использование Числовой # ceil :

irb(main):001:0> 1.5.ceil
=> 2
irb(main):002:0> 2.0.ceil
=> 2
irb(main):003:0> 1.ceil
=> 1
2 голосов
/ 19 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...