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のときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   num : 符号を求める数値 
// 【戻り値】
//   1 : 正の数、0 : ゼロ、-1 : 負の数、ERR_VALUE : それ以外 
//////////////////////////////////////////////////
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関数 (自作関数)
引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
radToDeg関数 (自作関数)
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
ARCSIN関数 (スクリプト関数)
引数の逆正弦を求めます。
EXP関数 (スクリプト関数)
自然指数関数を求めます。