共用方式為


圓(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 必須是 tinyintsmallintint 類型的運算式。當 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)
moneysmallmoney 類別 money
floatreal 類別 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. 使用 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