※最近接偶数への丸めとは~ 端数が0.5より小さいなら切り捨て、 端数が0.5より大きいならは切り上げ、 端数がちょうど0.5なら、切り捨てと切り上げのうち結果が偶数となる方へ丸める。 (要するに、n桁目の数値が0,2,4,6,8ならば、切り捨てる。 n桁目の数値が1,3,5,7,9ならば、n桁目を1単位だけ増す。) JIS Z 8401で規則Aとして定められていて、規則B(四捨五入)より「望ましい」とされている。 多数足し合わせても丸め誤差が累積しない。 「偶数への丸め」「最近接丸め」「JIS丸め」などとも呼ばれる。
●整数丸め 0桁目(小数点の左の桁)で丸める。(引数Nは無し) ●数値丸め N桁目で丸める(小数点無視) ●有効数値丸め N桁の有効数字で丸める。 ●小数点数値丸め 小数点N桁目で丸める。
//最近接丸めと四捨五入との差異確認例 「0.000450」を4で小数点数値丸めして言う。//0.0004 「0.000450」を4で小数点四捨五入して言う。//0.0005 //Nの差異確認てすてす 「12345.67890」を整数丸めして言う。//12346 「12345.67890」を7で有効数値丸めして言う。//12345.68 「12345.67890」を2で小数点数値丸めして言う。//12345.68 「12345.67890」を3で有効数値丸めして言う。//12300 「0.001234」を2で有効数値丸めして言う。//0.0012
●整数丸め(Sを) もしSの小数部分が0.5ならば Sを奇数判定。 もし、それが1ならば、Sを切り上げ。 違えば、Sを切り下げ。 違えば、Sを四捨五入。 ●数値丸め(SをNで) もし、Sの1から「.」を文字検索>0ならば、Z=(_)-1。S=Sの「.」を空に単置換。 違えば、Z=Sのバイト数。 A=S/(10^(Sのバイト数))。B=AをNで小数点数値丸め。B=B×(10^Z)。Bで戻る。 ●有効数値丸め(SをNで) //有効数字N桁に丸める D=0。1の間 E=Sの回数から1バイト抜き出す。 もし、E=「0」ならば、D=D+1。続ける。 もし、E=「.」ならば、続ける。 違えば、抜ける。 N=N+D。 (SをNで数値丸め)で戻る。 ●小数点数値丸め(SをNで) //小数点N桁目で丸める A=Sの(N+1)桁端数。 もし、A>0.5ならば、S=SをNで小数点切り上げ。 もし、A=0.5ならば B=(Sの(N)桁目)を奇数判定。 もし、B=1ならば、S=SをNで小数点切り上げ。 違えば、S=SをNで小数点切り下げ。 もし、A<0.5ならば、S=SをNで小数点切り下げ。 Sで戻る。 ●桁目(SのV) A=Sを(V)で小数点切り下げ。Aから1バイト右部分で戻る。 ●桁端数(SのV) A=Sを(V-1)で小数点切り下げ。「0.{SのAを空に単置換}」で戻る。 ●奇数判定(Sの|Sを) もし、S%2=1ならば、1で戻る。 違えば、0で戻る。