roundOffラウンドオフ関数

本ページには広告が含まれています。

指定した位置で四捨五入します。偶数丸めをする場合は、ROUND関数 (スクリプト関数)を使います。

構文
  1. Double = roundOff( num, digit )
引数
num 必須
数値
digit 省略可
四捨五入する位置(マイナスで整数方向)
戻り値
四捨五入した値

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   num : 数値 
//   digit : 四捨五入する位置(マイナスで整数方向) 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION roundOff(num, digit = 0)
	DIM sign = sign(num)
	num = ABS(num)
	DIM offset = POWER(10, digit)
	DIM n = num * offset - INT(num * offset)
	RESULT = sign * IIF(n >= 0.5, CEIL(num * offset) / offset, INT(num * offset) / offset)
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   num : 符号を求める数値 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION sign(num)
	SELECT TRUE
		CASE !CHKNUM(num)
			RESULT = ERR_VALUE
		CASE num > 0
			RESULT = 1
		CASE num = 0
			RESULT = 0
		CASE num < 0
			RESULT = -1
	SELEND
FEND

解説

  1. 2行目
    UWSC
    	DIM sign = sign(num)
    数値の符号をsignに代入。
  2. 3行目
    UWSC
    	num = ABS(num)
    numに符号を取った数値を代入。
  3. 4行目
    UWSC
    	DIM offset = POWER(10, digit)
    CEIL・INT関数で切り上げ・切り捨て処理する位置を小数第一位に持ってくるために掛ける値(オフセット)。CEIL・INT関数が小数第一位での端数処理しかできないためずらす。
  4. 5行目
    UWSC
    	DIM n = num * offset - INT(num * offset)
    小数点以下をnに代入。
  5. 6行目
    UWSC
    	RESULT = sign * IIF(n >= 0.5, CEIL(num * offset) / offset, INT(num * offset) / offset)
    nが0.5以上なら切り上げ、0.5未満なら切り捨てる。4行目でずらした分で割りもとの値に戻し、符号もつける。

位置

桁数で指定された位置での概数を求めます。桁数の一つ下の桁で四捨五入。小数第二位までの概数を求めるには、「2」を指定します。

roundOff.png

使い方

小数第3位までの概数。

UWSC
PRINT roundOff(1234.5678, 3)
結果
プレーンテキスト
1234.568

整数(一の位までの概数)にする。

UWSC
PRINT roundOff(1234.5678, 0)
結果
プレーンテキスト
1235

百の位までの概数。

UWSC
PRINT roundOff(1234.5678, -2)
結果
プレーンテキスト
1200

関連記事

ABS関数 (スクリプト関数)
引数の絶対値を求めます。
ARCCOS関数 (スクリプト関数)
引数の逆余弦を求めます。
CEIL関数 (スクリプト関数)
正の方向へ切り上げた数値を返します。
LN関数 (スクリプト関数)
自然対数を求めます。
LOGN関数 (スクリプト関数)
常用対数を求めます。
ZCUT関数 (スクリプト関数)
マイナス値を0にして返します。プラス値はそのままの値を返します。
isOdd関数 (自作関数)
奇数かどうか調べます。
radToDeg関数 (自作関数)
弧度法から度数法に変換します。
degToRad関数 (自作関数)
度数法から弧度法に変換します。
ARCSIN関数 (スクリプト関数)
引数の逆正弦を求めます。