最近接偶数への丸め

Full BASICの組込関数ROUND(x,n)は,INT(x*10^n+0.5)/10^n で定義されています。
JIS Z 8401で定義される最近接偶数への丸めの方法によって端数処理を行いたいときは,次のような外部関数を定義して使うとよいでしょう。
使い方はFull BASICの組込関数ROUNDと同じにしてあります。
外部関数として定義したROUND10を使いたいときは,END行以降に下記のコードを追加し,また,プログラムのはじめに

DECLARE EXTERNAL FUNCTION ROUND10

を書いてください。
他の外部手続きでもこの関数を使うときは,外部手続きごとにDECLARE EXTERNAL FUNCTION文を書く必要があります。

EXTERNAL FUNCTION ROUND10(x,n)
REM 最近接偶数への丸めの方法で
REM xを小数点以下n桁に丸める
LET x=x*10^n
IF MOD(x,1)<0.5 THEN
   LET x=INT(x)
ELSEIF MOD(x,1)>0.5 THEN
   LET x=CEIL(x)
ELSEIF MOD(INT(x),2)=0 THEN
   LET x=INT(x)
ELSE 
   LET x=CEIL(x)
END IF
LET ROUND10=x/10^n
END FUNCTION


<Note>
定義する関数の名前をROUNDにしてもかまいません(END FUNCTION行直前のLET文の関数名の修正も忘れないように)。ただし,そのとき,DECLARE EXTERNAL FUNCTION ROUNDを書いたプログラム単位で組込関数のROUNDは使えなくなります。

<補足>
2進モードのとき,引数が1個のROUND(x)関数は最近接偶数への丸めを行います。(Full BASIC規格外の関数です)
これを利用して,2進モードのとき,xを小数点以下のビット数がnとなるように丸める関数を

DEF ROUND2(x,n)=ROUND(x*2^n)/2^n

で定義できます。


戻る