四捨五入、数値の丸め処理
⇒ 日付の丸め処理
ROUND ( number [, integer] )
ROUND ( float_number )
return [ number | binary_float | binary_double ]
number | 丸め処理を行なう数値式 | |
integer | 丸め処理をする位(小数の桁数) | default 0 |
float_number | BINARY_FLOAT、BINARY_DOUBLE 型の式 | |
ROUND(数値)関数の内容
数値式 number を小数第 integer 位(省略時は 0)に四捨五入した値を戻す。
丸め処理(※)する位 integer が負の場合は小数点の左桁、つまり整数部の指定桁以下が丸め処理の対象となる。
(※) 丸め処理とは四捨五入を含むの複数の丸め処理の総称である。Oracle の ROUND 関数は四捨五入と呼ばれるもの。また JIS 規格に定められている計測処理(JIS Z8401-1999)では丸め処理というと偶数丸め(銀行丸め)の近い偶数に丸めるのが一般的のようである。(Oracle 標準 SQL 関数には該当するものが無い)
注意
浮動小数点型と ROUND 関数
数値式として浮動小数点のデータ型(BINARY_FLOAT、BINARY_DOUBLE のみ)を受け付ける
ROUND (float_number) 関数の場合、数値として xxx.5 を入力とすると近い偶数の整数値に丸められる。
但し、位を省略した場合(=小数第一位)限定の振る舞いなので浮動小数点で丸め処理をする場合には気をつける。
これは ROUND 関数の オーバーロード が ROUND (float_number) のみで ROUND ( float_number [, integer] ) が用意されていないことによって float_number が NUMBER 型に 暗黙変換 されていることに起因する。
ROUND(数値) 使用例
SQL> select num, d, p, ROUND(num,p), ROUND(d), ROUND(d,p)
2 from round_sample2;
NUMBER型 BINARY_DOUBLE型
NUM D P ROUND(NUM,P) ROUND(D) ROUND(D,P)
---------- --------------- ---------- ------------ ---------- ----------
1234.5678 1.2345678E+03 2 1234.57 1.235E+003 1234.57
1234.5678 1.2345678E+03 1 1234.6 1.235E+003 1234.6
1234.5 1.2345000E+03 0 1235 1.234E+003 1235
^^^^^^^^^^ ^^^^
1234.5678 1.2345678E+03 0 1235 1.235E+003 1235
1234.5678 1.2345678E+03 -1 1230 1.235E+003 1230
^^^^^^^^^^ ^^^^
BINARY_DOUBLE NUMBER型
SQL 関数 - ROUND 関連