ROUND (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Возвращает числовое значение, округленное до указанной длины или точности.
Соглашения о синтаксисе Transact-SQL
Синтаксис
ROUND ( numeric_expression , length [ ,function ] )
Аргументы
numeric_expression
Выражение точной числовой или приблизительной категории типов данных.
length
Точность, с которой должно быть округлено значение numeric_expression. длина должна быть выражением типа tinyint, smallint или int. Если длина является положительным числом, numeric_expression округляется до числа десятичных позиций, указанных по длине. Если аргумент length является отрицательным числом, значение numeric_expression округляется слева от десятичной запятой, как указано в аргументе length.
function
Тип выполняемой операции. функция должна быть крошечной, маленькой или int. Если функция опущена или имеет значение 0 (по умолчанию), numeric_expression округляется. Когда указывается значение, не равное 0, значение numeric_expression усекается.
Типы возвращаемых данных
Возвращает следующие типы данных.
Результат выражения | Возвращаемый тип |
---|---|
tinyint | int |
smallint | int |
int | int |
bigint | bigint |
Категория decimal и numeric (p, s) | decimal(p, s) |
Категории money и smallmoney | money |
Категории float и real | float |
Замечания
Функция ROUND всегда возвращает значение. Если аргумент length имеет отрицательное значение и больше числа знаков перед десятичной запятой, ROUND возвращает 0.
Пример | Результат |
---|---|
ROUND(748,58, -4) | 0 |
Функция ROUND возвращает округленное значение выражения numeric_expression независимо от типа данных, когда length является отрицательным числом.
Примеры | Результат |
---|---|
ROUND(748,58, -1) | 750,00 |
ROUND(748,58, -2) | 700.00 |
ROUND(748.58, -3) | В результате возникает арифметическое переполнение, так как для значения 748,58 по умолчанию используется тип decimal (5,2), который не позволяет вернуть значение 1000. |
Чтобы округлить результат до четырех цифр, измените тип данных на входе. Например:SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); |
1000,00 |
Примеры
А. Использование функции 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
C. Использование функции ROUND для усечения
В следующем примере используются две инструкции SELECT
для демонстрации различия между округлением и усечением. Первая инструкция округляет результат. Вторая инструкция усекает результат.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
Вот результирующий набор.
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)
См. также
CEILING (Transact-SQL)
Типы данных (Transact-SQL)
Выражения (Transact-SQL)
FLOOR (Transact-SQL)
Математические функции (Transact-SQL)