ROUND (Transact-SQL)

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

主题链接图标Transact-SQL 语法约定

语法

ROUND ( numeric_expression , length [ ,function ] )

参数

  • numeric_expression
    精确数值或近似数值数据类别(bit 数据类型除外)的表达式
  • length
    numeric_expression 的舍入精度。length 必须是 tinyintsmallintint 类型的表达式。如果 length 为正数,则将 numeric_expression 舍入到 length 指定的小数位数。如果 length 为负数,则将 numeric_expression 小数点左边部分舍入到 length 指定的长度。
  • function
    要执行的操作的类型。function 必须为 tinyintsmallintint。如果省略 function 或其值为 0(默认值),则将舍入 numeric_expression。如果指定了 0 以外的值,则将截断 numeric_expression

返回类型

返回与 numeric_expression 相同的类型*。*

备注

ROUND 始终返回一个值。如果 length 为负数,并且大于小数点前的数字个数,则 ROUND 将返回 0。

示例 结果

ROUND(748.58, -4)

0

如果 length 为负数,则无论什么数据类型,ROUND 都将返回一个舍入的 numeric_expression

示例 结果

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    

B. 使用 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)

C. 使用 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)

请参阅

参考

CEILING (Transact-SQL)
数据类型 (Transact-SQL)
表达式(Transact-SQL)
FLOOR (Transact-SQL)
数学函数 (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助