ROUNDUP ファンクション(切り上げ)
切り上げ ( ROUNDUP )
- 書式
- ROUNDUP( number [,integer] )
number を小数点以下 integer 桁で切り上げた値を戻す。
引数 integer が負の場合は小数点の左桁が切り上げられる。(整数部)
number の切り上げた整数を戻す。
ROUNDUP( 9.4) ⇒ 9
ROUNDUP(-9.4) ⇒ -10
ROUNDUP( 11, -1) ⇒ 20
切り捨てを行なう場合には TRUNC 関数 を使用する。
ROUNDUP 単体ファンクション版
CREATE OR REPLACE FUNCTION ROUNDUP(P_NUM IN NUMBER, P_PLACE IN INTEGER := 0)
RETURN NUMBER
IS
vBase NUMBER;
BEGIN
IF (P_NUM = 0) THEN
RETURN 0;
END IF;
vBase := 10 ** P_PLACE ; -- POWER(10,P_PLACE)
RETURN CEIL(ABS(P_NUM) * vBase) / vBase * SIGN(P_NUM);
-- RETURN CEIL(P_NUM * vBase) / vBase;
END;
/
負の場合の切り上げは、表計算ソフトを参考にしている。
目的に合っていない場合はコメントを入れ替えてください。(CEIL 関数 は天井関数で「切り上げ」関数 ではありません)
引数が NULL の場合でも NULL 以外の 38 桁の数値 とほぼ同じコストで NULL を戻す仕様で作成しています。
NULL のときだけに動作を早くすることを冗長と考えているためです。
パッケージ版
SQL 文による 切り上げ 計算
数値 1.25 の小数点第一位以下に切り上げる例
SELECT
CEIL(ABS(1.25) * POWER(10,1)) / POWER(10,1) * SIGN(1.25)
FROM DUAL;
SQL 関数 - ROUNDUP 関連