What is the cleanest method to find the ciel and floor of a number in SQLite? Unfortunately SQLite only has ROUND()
function.
The ceil function returns the smallest integer value which is greater than or equal to the specified number, whereas the floor function returns the largest integer value which is less than or equal to the specified number.
Definition and UsageThe CEILING() function returns the smallest integer value that is larger than or equal to a number. Tip: Also look at the FLOOR() and ROUND() functions.
The CEIL() function returns the smallest integer value that is bigger than or equal to a number. Note: This function is equal to the CEILING() function.
The SQLite divide ( / ) operator is used to divide one expression or numbers by another.
Ceil : cast ( x as int ) + ( x > cast ( x as int ))
Take integer part of x and add 1 if decimal value is greater than 0
Floor : cast ( x as int ) - ( x < cast ( x as int ))
Take integer part of x and subtract 1 if decimal value is less than 0
Ceil :
SELECT (cast ( amount as int ) + ( amount > cast ( amount as int ))) AS amount
FROM SALES WHERE id = 128;
Floor :
SELECT (cast ( amount as int ) - ( amount < cast ( amount as int ))) AS amount
FROM SALES WHERE id = 128;
I have checked all the corner cases including negative number with MySQL ceil()
and floor()
functions.
You can use ROUND()
to the effect of CEIL
and FLOOR
if you add or subtract 0.5 from the number on hand. I like this more, because it's can be more readable.
Expanding on Anees' example :
Ceil : SELECT ROUND(amount+0.5, 0) AS amount FROM SALES WHERE id = 128;
Floor : SELECT ROUND(amount-0.5, 0) AS amount FROM SALES WHERE id = 128;
Thanks Anees for the comment below, I didn't think of that corner case either. His solution is more robust.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With