Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает числовое значение, округленное до указанной длины или точности.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Cинтаксические обозначения в Transact-SQL
Синтаксис
ROUND ( numeric_expression , length [ ,function ] )
Аргументы
numeric_expression
Выражение, принадлежащее к категории точных или приблизительных числовых типов данных, за исключением типа данных bit.length
Точность, с которой должно быть округлено значение выражения numeric_expression. Значение length должно быть выражением типа tinyint, smallint или int. Когда аргумент length является положительным числом, numeric_expression округляется до числа десятичных разрядов, указанных в аргументе length. Когда length является отрицательным числом, numeric_expression округляется слева от точки, отделяющей десятичную дробь от целого числа, как указано в length.function
Тип выполняемой операции. Аргумент function должен быть равен tinyint, smallint или int. Когда аргумент function опускается или имеет значение 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
Б.Использование функции ROUND и округляющих аппроксимаций
В следующем примере показаны округление и аппроксимация.
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);
GO
Ниже приводится результирующий набор.
----------
123.4500
(1 row(s) affected)
--------
100.00
(1 row(s) affected)
В.Использование функции 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)