ROUND (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。
傳回類型
傳回與 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)