Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Возвращает числовое значение, округленное до указанной длины или точности.
Соглашения о синтаксисе Transact-SQL
Синтаксис
ROUND ( numeric_expression , length [ , function ] )
Аргументы
numeric_expression
Выражение категории точного числового или приблизительного числового типа данных.
length
Точность, с которой numeric_expression должна быть округлена. длина должна быть выражением типа tinyint, smallint или int. Если длина является положительным числом, numeric_expression округляется до числа десятичных позиций, указанных по длине. Если аргумент length является отрицательным числом, значение numeric_expression округляется слева от десятичной запятой, как указано в аргументе length.
function
Тип операции, которую нужно выполнить. функция должна бытьtinyint, smallint или int. Когда функция опущена или имеет значение 0 (по умолчанию), numeric_expression округляется. Когда задаётся значение, отличное от 0 не, numeric_expression усекается.
Типы возвращаемых данных
Возвращает следующие типы данных.
| Результат выражения | Возвращаемый тип |
|---|---|
| tinyint | int |
| smallint | int |
| int | int |
| bigint | bigint |
| Категория decimal и numeric (p, s) | Десятичная(p, s) |
| Категории money и smallmoney | money |
| Категории float и real | float |
Замечания
ROUNDВсегда возвращает значение. Если длина — отрицательная и больше числа цифр до десятичной точки,ROUNDто возвращает0.Пример Результат ROUND(748.58, -4)0 ROUNDвозвращает округлённый numeric_expression, независимо от типа данных, когда длина — отрицательное число.Примеры Результат ROUND(748.58, -1)750,00 ROUND(748.58, -2)700.00 ROUND(748.58, -3)Это приводит к арифметическому переполнению, потому что 748.58 по умолчанию устанавливается на десятичную (5, 2), которая не может вернуть 1000.00.Чтобы округлить до четырёх цифр, измените тип данных на входе. Например:
SELECT ROUND(CAST (748.58 AS DECIMAL (6, 2)), -3);Вот результирующий набор.
1000.00ROUNDРазрывает ничью, округляя половину от нуля (также известное как коммерческое округление).Примеры Результат ROUND(1.15, 1)1.2 ROUND(-1.15, 1)-1.2
Примеры
А. Используйте ROUND и оценки
Следующий пример показывает два выражения, которые демонстрируют с помощью ROUND, что последняя цифра всегда является оценкой.
SELECT ROUND(123.9994, 3),
ROUND(123.9995, 3);
GO
Вот результирующий набор.
----------- -----------
123.9990 124.0000
B. Используйте приближения ROUND и округление
В следующем примере показаны округление и аппроксимация.
SELECT ROUND(123.4545, 2),
ROUND(123.45, -2);
Вот результирующий набор.
---------- ----------
123.4500 100.00
В. Используйте ROUND для усечения
В следующем примере используются две инструкции SELECT для демонстрации различия между округлением и усечением. Первая инструкция округляет результат. Вторая инструкция усекает результат.
SELECT ROUND(150.75, 0);
GO
Вот результирующий набор.
151.00
SELECT ROUND(150.75, 0, 1);
GO
Вот результирующий набор.
150.00