Как мне округлить до ближайшего целого числа в MySQL?
Пример: 12345.7344 rounds to 12345
round()
Функция mysql округляется вверх.
Я не знаю, как долго будут значения и десятичные разряды, может быть 10 цифр с 4 десятичными знаками, может быть 2 цифры с 7 знаками после запятой.
Ответы:
Используйте ЭТАЖ :
SELECT FLOOR(your_field) FROM your_table
источник
FLOOR()
была разница между двумя подзапросами (разница в подзапросах была -70,00) ... когда-либо видел это раньше?Используйте FLOOR () , если вы хотите округлить десятичную дробь до меньшего целого числа. Примеры:
Используйте ROUND () , если вы хотите округлить десятичную дробь до ближайшего целого числа. Примеры:
Используйте CEIL () , если вы хотите округлить десятичную дробь до верхнего целого числа. Примеры:
источник
SELECT FLOOR(12345.7344);
Подробнее читайте здесь .
источник
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
источник
Это можно сделать двумя способами:
select floor(desired_field_value) from table
select round(desired_field_value-0.5) from table
Второе объяснение: предположим, что 12345,7344 целое число. Итак, 12345,7344 - 0,5 = 12345,2344 и результат округления будет 12345.
источник
Попробуй это,
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
источник