CEIL и FLOOR в SQLite - PullRequest
       76

CEIL и FLOOR в SQLite

0 голосов
/ 28 января 2019

Какой самый простой способ найти ciel и floor числа в SQLite ?К сожалению, SQLite имеет только функцию ROUND().

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете использовать ROUND() с эффектами CEIL и FLOOR, если вы добавляете или вычитаете 0,5 из имеющегося числа.Мне это нравится больше, потому что это может быть более читабельным.

Расширение на примере Anees:

Ceil : SELECT ROUND(amount+0.5, 0) AS amount FROM SALES WHERE id = 128;
Этаж : SELECT ROUND(amount-0.5, 0) AS amount FROM SALES WHERE id = 128;

Спасибо Anees за комментарий ниже, я также не думал об этом угловом случае.Его решение более надежно.

0 голосов
/ 28 января 2019

Формулы

Ceil: cast ( x as int ) + ( x > cast ( x as int ))
Возьмите целую часть x и добавьте 1, если десятичное значение больше 0

Этаж: cast ( x as int ) - ( x < cast ( x as int ))
Взять целую часть x и вычесть 1, если десятичное значение меньше 0


Примеры

Ceil:
SELECT (cast ( amount as int ) + ( amount > cast ( amount as int ))) AS amount FROM SALES WHERE id = 128;
Этаж:
SELECT (cast ( amount as int ) - ( amount < cast ( amount as int ))) AS amount FROM SALES WHERE id = 128;



Я проверил все угловые случаи, включая отрицательное число, с MySQL ceil() и floor() функции.

Test result

...