it-roy-ru.com

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

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

Пример: 12345.7344 rounds to 12345

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

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

70
d-_-b

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

SELECT FLOOR(your_field) FROM your_table
94
Jocelyn

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

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

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

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

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

CEIL(1.9) => 2
CEIL(1.1) => 2
28
Black Shell

В некоторых случаях 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
4
Guest
SELECT FLOOR(12345.7344);

Читать дальше здесь .

3
hjpotter92

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

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

или же

SELECT FLOOR(12345.7344)

SQLFiddle Demo

1
John Woo

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

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

0
VolkanCetinkaya