共用方式為


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(p, s)

money 和 smallmoney 類別目錄

money

float 和 real 類別目錄

float

備註

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)

導致算術溢位,因為 748.58 預設為 decimal(5,2),而它不可能傳回 1000.00。

若要無條件進位至 4 位數,請變更輸入的資料類型。例如:

SELECT ROUND(CAST (748.58 AS decimal (6,2)),-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)