Поделиться через


ROUND (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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)