Ответ 1
Используйте FLOOR:
SELECT FLOOR(your_field) FROM your_table
Как бы округлить до ближайшего целого в MySQL?
Пример: 12345.7344 rounds to 12345
Функция mysql round()
округляется вверх.
Я не знаю, как долго будут использоваться значения и десятичные разряды, может быть 10 цифр с 4 десятичными знаками, может быть 2 цифры с 7 знаками после запятой.
Используйте FLOOR:
SELECT FLOOR(your_field) FROM your_table
Используйте 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
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 SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)
или
SELECT FLOOR(12345.7344)
если вам нужны десятичные знаки, вы можете использовать этот
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
Это можно сделать следующими двумя способами:
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.