Как на счет ближайшего целого числа, меньшего или равного какого-то значения?
Для этого тоже есть отдельная функция - FLOOR
:
SELECT floor (2.1) AS "floor(2.1)",
ceil (2.1) AS "ceil(2.1)",
floor (2.6) AS "floor(2.6)",
ceil (2.6) AS "ceil(2.6)"
# | floor(2.1) | ceil(2.1) | floor(2.6) | ceil(2.6) |
---|---|---|---|---|
1 | 2 | 3 | 2 | 3 |
Если вызвать функцию от целого числа, то получим это же самое число:
SELECT floor (2) AS "floor(2)"
# | floor(2) |
---|---|
1 | 2 |
При вызове от отрицательного числа функция по прежнему возвращает ближейшее меньшее целое число:
SELECT floor (-2.1) AS "floor(-2.1)",
ceil (-2.1) AS "ceil(-2.1)",
floor (-2.6) AS "floor(-2.6)",
ceil (-2.6) AS "ceil(-2.6)"
# | floor(-2.1) | ceil(-2.1) | floor(-2.6) | ceil(-2.6) |
---|---|---|---|---|
1 | -3 | -2 | -3 | -2 |
Сравнение TRUNC
и FLOOR
На первый взгляд можно подумать, что функции TRUNC
и FLOOR
ведут себя одинаково. TRUNC
отбрасывает дробную часть, FLOOR
- округляет в меньшую сторону.
SELECT floor(2.4), trunc (2.4)
# | floor | trunc |
---|---|---|
1 | 2 | 2 |
Различия начинают проявляться при работе с отрицательными числами:
SELECT floor(-2.4), trunc (-2.4)
# | floor | trunc |
---|---|---|
1 | -3 | -2 |