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


КРУГЛЫЙ (Transact-SQL)

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

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

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

Синтаксис

ROUND ( numeric_expression , length [ , function ] )

Аргументы

numeric_expression

Выражение категории точного числового или приблизительного числового типа данных.

length

Точность, с которой numeric_expression должна быть округлена. длина должна быть выражением типа tinyint, smallint или int. Если длина является положительным числом, numeric_expression округляется до числа десятичных позиций, указанных по длине. Если аргумент length является отрицательным числом, значение numeric_expression округляется слева от десятичной запятой, как указано в аргументе length.

function

Тип операции, которую нужно выполнить. функция должна бытьtinyint, smallint или int. Когда функция опущена или имеет значение 0 (по умолчанию), numeric_expression округляется. Когда задаётся значение, отличное от 0 не, numeric_expression усекается.

Типы возвращаемых данных

Возвращает следующие типы данных.

Результат выражения Возвращаемый тип
tinyint int
smallint int
int int
bigint bigint
Категория decimal и numeric (p, s) Десятичная(p, s)
Категории money и smallmoney money
Категории float и real float

Замечания

  • ROUND Всегда возвращает значение. Если длина — отрицательная и больше числа цифр до десятичной точки, ROUND то возвращает 0.

    Пример Результат
    ROUND(748.58, -4) 0
  • ROUND возвращает округлённый numeric_expression, независимо от типа данных, когда длина — отрицательное число.

    Примеры Результат
    ROUND(748.58, -1) 750,00
    ROUND(748.58, -2) 700.00
    ROUND(748.58, -3) Это приводит к арифметическому переполнению, потому что 748.58 по умолчанию устанавливается на десятичную (5, 2), которая не может вернуть 1000.00.
  • Чтобы округлить до четырёх цифр, измените тип данных на входе. Например:

    SELECT ROUND(CAST (748.58 AS DECIMAL (6, 2)), -3);
    

    Вот результирующий набор.

    1000.00
    
  • ROUND Разрывает ничью, округляя половину от нуля (также известное как коммерческое округление).

    Примеры Результат
    ROUND(1.15, 1) 1.2
    ROUND(-1.15, 1) -1.2

Примеры

А. Используйте 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

В. Используйте ROUND для усечения

В следующем примере используются две инструкции SELECT для демонстрации различия между округлением и усечением. Первая инструкция округляет результат. Вторая инструкция усекает результат.

SELECT ROUND(150.75, 0);
GO

Вот результирующий набор.

151.00
SELECT ROUND(150.75, 0, 1);
GO

Вот результирующий набор.

150.00