ROUND (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(38, 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) |
1000.00 |
Примеры
A. Использование функции 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)