轮(Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库Microsoft Fabric 中的 SQL 数据库

返回一个数值,舍入到指定的长度或精度。

Transact-SQL 语法约定

语法

ROUND ( numeric_expression , length [ , function ] )

参数

numeric_expression

精确数值或近似数值数据类型类别的表达式

length

numeric_expression的精确度需要四舍五入。 length 必须是 tinyint、smallint 或 int 类型的表达式 。如果 length 为正数,则将 numeric_expression 舍入到 length 指定的小数位数 。 如果 length 为负数,则将 numeric_expression 小数点左边部分舍入到 length 指定的长度

函数

要执行的手术类型。 函数 必须是 tinyintsmallintint当函数 被省略或值为(默认值) 0 时, numeric_expression 会被四舍五入。 当指定了非 的 0 值时, numeric_expression 会被截断。

返回类型

返回以下数据类型。

表达式结果 返回类型
tinyint int
smallint int
int int
bigint bigint
decimalnumeric 类别 (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

示例

A. 使用四舍五入和估算

以下示例展示了两个表达式,通过使用 ROUND,最后一位数字始终是估计值。

SELECT ROUND(123.9994, 3),
       ROUND(123.9995, 3);
GO

结果集如下。

----------- -----------
123.9990    124.0000

B. 使用四周和四舍五入近似

以下示例显示舍入和近似值。

SELECT ROUND(123.4545, 2),
       ROUND(123.45, -2);

结果集如下。

----------  ----------
123.4500    100.00

°C 使用 ROUND 来截断

以下示例使用了两个 SELECT 语句,用于阐释舍入和截断之间的区别。 第一个语句舍入结果。 第二个语句截断结果。

SELECT ROUND(150.75, 0);
GO

结果集如下。

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

结果集如下。

150.00