次の方法で共有


ラウンド(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

指定された長さまたは有効桁数に丸めた数値を返します。

Transact-SQL 構文表記規則

構文

ROUND ( numeric_expression , length [ , function ] )

引数

numeric_expression

真数のデータ型または概数のデータ型のを指定します。

length

numeric_expressionの精度は四捨五入されるべきです。 length には、tinyintsmallint、または int 型の式を指定する必要があります。length に正の値を指定した場合、numeric_expressionlength で指定した小数点以下桁数に丸められます。 length に負の値を指定した場合、numeric_expression の小数点の左側が length で指定した桁数に丸められます。

function

どのような手術を行うべきか。 関数tinyintsmallint、intでなければなりません。関数が省略されるか、値が0(デフォルト)の場合、numeric_expressionは丸められます。 0以外の値を指定した場合、numeric_expressionは切り詰められます。

戻り値の型

次のデータ型を返します。

式の結果 の戻り値の型 :
tinyint int
smallint int
int int
bigint bigint
decimal および numeric カテゴリ (p, s) 10進法(p, s)
money および smallmoney カテゴリ money
float および real カテゴリ float

注釈

  • ROUND 常に値を返します。 長さが負で小数点以下の桁数より大きい場合、ROUND0を返します。

    結果
    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はデフォルトで 10進数(5, 2)に切り替えられ、返 1000.00できないため、算術オーバーフローが発生します。
  • 4桁まで切り上げるには、入力のデータ型を変更してください。 次に例を示します。

    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と推定値を使います

以下の例は、 ROUND を使うことで、最後の数字が常に推定値であることを示す2つの式を示しています。

SELECT ROUND(123.9994, 3),
       ROUND(123.9995, 3);
GO

結果セットは次のとおりです。

----------- -----------
123.9990    124.0000

B. 丸め近似と丸め近似を用いる

次の例では、数値を丸めて概数化します。

SELECT ROUND(123.4545, 2),
       ROUND(123.45, -2);

結果セットは次のとおりです。

----------  ----------
123.4500    100.00

C: ROUNDを使って切り捨てます

次の例では、2 つの SELECT ステートメントを使用して、丸め処理と切り捨て処理の違いを示します。 最初のステートメントは、結果を丸めます。 2 番目のステートメントは、結果を切り捨てます。

SELECT ROUND(150.75, 0);
GO

結果セットは次のとおりです。

151.00
SELECT ROUND(150.75, 0, 1);
GO

結果セットは次のとおりです。

150.00