Как округлить до ближайшего целого числа в MySQL?



Как бы я округлил до ближайшего целого числа в MySQL?



пример: 12345.7344 rounds to 12345



в MySQL round() функция округляет.



Я не знаю, как долго значения, ни десятичные знаки будут, может быть 10 цифр с 4 десятичными знаками, может быть 2 цифры с 7 десятичными знаками.

516   6  

6 ответов:

использовать Пол:

SELECT FLOOR(your_field) FROM your_table

использовать пол(), если вы хотите округлить десятичное число до ниже целое число. Примеры:

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

использовать круглое(), если вы хотите округлить десятичное число до ближайший целое число. Примеры:

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

использовать CEIL (), если вы хотите округлить десятичное число до верхний целое число. Примеры:

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

SUBSTR будет лучше, чем FLOOR в некоторых случаях, потому что пол имеет "ошибку" следующим образом:

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
SELECT FLOOR(12345.7344);

подробнее здесь.

попробуйте это,

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

или

SELECT FLOOR(12345.7344)

Демо SQLFiddle

Если вам нужны десятичные числа можно использовать это

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

выход: 19.147100 Ясно: 985 Добавлю: 00

или так:

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

выход: 19.1471 Ясно: 985

Comments

    Ничего не найдено.