Подтвердить что ты не робот

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

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

Пример: 12345.7344 rounds to 12345

Функция mysql round() округляется вверх.

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

4b9b3361

Ответ 1

Используйте FLOOR:

SELECT FLOOR(your_field) FROM your_table

Ответ 2

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

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

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

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

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

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

Ответ 3

SELECT FLOOR(12345.7344);

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

Ответ 4

SUBSTR в некоторых случаях будет лучше, чем FLOOR, потому что 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

Ответ 5

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

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

или

SELECT FLOOR(12345.7344)

SQLFiddle Demo

Ответ 6

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

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

Ответ 7

Это можно сделать следующими двумя способами:

  • select floor(desired_field_value) from table
  • select round(desired_field_value-0.5) from table

Объяснение 2-го пути: предположим, 12345,7344 целое число. Так, 12345,7344 - 0,5 = 12345,2344 и округление результата будет 12345.