Home » Mysql » How to round down to nearest integer in MySQL?

How to round down to nearest integer in MySQL?

Posted by: admin November 1, 2017 Leave a comment

Questions:

How would I round down to the nearest integer in MySQL?

Example: 12345.7344 rounds to 12345

mysql’s round() function rounds up.

I don’t know how long the values nor the decimal places will be, could be 10 digits with 4 decimal places, could be 2 digits with 7 decimal places.

Answers:

Use FLOOR:

SELECT FLOOR(your_field) FROM your_table

Questions:
Answers:

Use FLOOR(), if you want to round your decimal to the lower integer. Examples:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

Use ROUND(), if you want to round your decimal to the nearest integer. Examples:

ROUND(1.9) => 2
ROUND(1.1) => 1

Use CEIL(), if you want to round your decimal to the upper integer. Examples:

CEIL(1.9) => 2
CEIL(1.1) => 2

Questions:
Answers:

SUBSTR will be better than FLOOR in some cases because FLOOR has a “bug” as follow:

SELECT 25 * 9.54 + 0.5 -> 239.00

SELECT FLOOR(25 * 9.54 + 0.5) -> 238  (oops!)

SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239

Questions:
Answers:
SELECT FLOOR(12345.7344);

Read more here.

Questions:
Answers:

Try this,

SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)

or

SELECT FLOOR(12345.7344)

SQLFiddle Demo

Questions:
Answers:

if you need decimals can use this

DECLARE @Num NUMERIC(18, 7) = 19.1471985
SELECT FLOOR(@Num * 10000) / 10000

Output: 19.147100
Clear: 985
Add: 00

OR use this:

SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)

Output: 19.1471
Clear: 985