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 は切り捨てられます。
戻り値の型
次のデータ型を返します。
式の結果 |
戻り値の型 |
---|---|
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 |
ROUND は、length が負の値であるときは、データ型に関係なく、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 を使用することにより最後の桁が常に概数になることを表す 2 つの式を示します。
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 を使用して切り捨てを行う
次の例では、2 つの SELECT ステートメントを使用して、丸め処理と切り捨て処理の違いを示します。最初のステートメントは、結果を丸めます。2 番目のステートメントは、結果を切り捨てます。
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)