適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
傳回數值,捨入到指定的長度或有效位數。
語法
ROUND ( numeric_expression , length [ , function ] )
引數
numeric_expression
精確數值或近似數值資料類型目錄的運算式。
length
numeric_expression應該四捨五入的精確度。 length 必須是 tinyint、smallint 或 int 類型的運算式。當 length 是正數時,numeric_expression 會捨入到 length 所指定的十進位數。 當 length 是負數時,numeric_expression 會依照 length 所指定的方式,在小數點左側捨入。
函數
該執行的手術類型。
函數 必須是 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.00ROUND透過將零數四捨五入(也稱為商業四捨五入)來打破平手。範例 結果 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. 使用 ROUND 與四捨五入近似
下列範例顯示捨入和近似值。
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