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
で定義できます。