ROUND (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Возвращает числовое значение, округленное до указанной длины или точности.

Соглашения о синтаксисе Transact-SQL

Синтаксис

ROUND ( numeric_expression , length [ ,function ] )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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)