xls-hashimotoのExcel学

xls-hashimoto mougモーグ 回答集


回答0006 JIS Z8401:1999 数値の丸め方

JIS Z8401:1961」は改正され、「JIS Z8401:1999 数値の丸め方」に置き換えられました。
「最近接愚数への丸め」・「銀行丸め」・「JIS丸め」・「ISO丸め」など呼ばれているそうです。
何故、そのように呼ばれるのか?「
JISC 日本工業標準調査会のJIS検索」ページで調べてみました。

JIS Z8401:1999のExcelファイル」(ただし、誤字・脱字・誤植があるかも)を起こし、
JIS Z8401:1999のhtmファイル」を、Excelの標準機能(htmlの自動作成)を利用して、
Webページとして保存(G)することで作りました。
JIS Z8401:1999のPDFファイル」を変換した小さなJPEGファイルは、つぎの様になります。

JIS_Z8401_1
JIS_Z8401_2
JIS_Z8401_3
JIS_Z8401_4

JIS Z8401:1999のExcelファイル」(ただし、誤字・脱字・誤植があるかも)

序文によると、「この規格は、ISO31-0:1992を翻訳し、技術的内容を変更することなく作成した」そうです。
本文中の技術的内容を、例などを除いて主要部のみを示すと次の様になります。

2. 数値の丸め方
a)丸めるとは,与えられた数値を,ある一定の丸めの幅の整数倍がつくる系列の中から選んだ数値に置き換えることである。この置き換えた数値を丸めた数値と呼ぶ。
b)与えられた数値に最も近い整数倍が一つしかない場合には,それを丸めた数値とする。
c)与えられた数値に等しく近い,二つの隣り合う整数倍がある場合は,次の規則Aが用いられる。
規則A丸めた数値として偶数倍のほうを選ぶ。
備考 規則Aには,例えば,一連の測定値をこの方法で処理するとき,丸めによる誤差が最小になるという特別な利点がある。
参考1. c)の場合,次の規則Bが用いられることもある。
規則B丸めた数値として整数倍のほうを選ぶ。
2. 規則Bは,電子計算機による処理において広く用いられている。
4. 丸めの幅を10kkは整数)とすれば,規則Bはいわゆる四捨五入である。


与えられた数値に等しく近い,二つの隣り合う整数倍がある場合は,
丸めた数値として偶数倍のほうを選ぶ。


丸めの幅を1とした場合、
1.5のときは、12の等しく近い、二つの隣り合う整数倍があるので、偶数倍の2のほうを選ぶ。
2.5のときは、23の等しく近い、二つの隣り合う整数倍があるので、偶数倍の2のほうを選ぶ。
等しく近いとは、丸めの幅を1とした場合、「ちょうど .5」となるときです。

この規則には、
一連の測定値をこの方法で処理するとき,
丸めによる誤差が最小になるという特別な利点がある。

そうです。

この検証に使った「一連の測定値」を見てみたいものです。
私には、「丸めによる誤差が最小になる特別な利点がある一連の測定値」を、
検証に使ったからではないかと思えてなりません。
そこで、手元にあったデータを使って、Excelで検証計算をしました。



JIS Z8401:1999 数値の丸め方 検証計算結果

データは、手元にあった10,047個の測定データを使用しました。

規則Bの計算には、Excelのワークシート関数のROUND関数を使用しました。

規則Aの計算には、次の三つの式を使用しました。

xls-hashimotoの式
=ROUND((値-0.1/10^桁*(AND(MOD(INT(値*10^桁),2)=0,RIGHT(値*10^桁,2)=".5"))),桁)

「んなっと」さんの式
=IF(RIGHT(値*10^桁,2)=".5",MROUND(値,2*10^-桁),ROUND(値,桁))

Chiquilin」さんの式
=IF(MOD(ROUND(値*10^(桁+1),10),10)=5,EVEN(ABS(値)*10^桁-0.5)/10^桁*SIGN(値),ROUND(値,桁))

結果として、
与えられた数値に等しく近い,二つの隣り合う整数倍がある場合は,
丸めた数値として偶数倍のほうを選ぶ。


一連の測定値をこの方法で処理するとき,
丸めによる誤差が最小になるという特別な利点がある。

ことが、確認出来ました

ただし、検証に使ったデータの有効数字の桁数にも依存すると思います。
検証データでは、五捨六入(5は偶奇半々で相殺される)でも、誤差は小さくなります。
四捨五入では、5はすべて切り上げられるので、誤差は大きくなります。

marume_gosa

「JIS Z8401:1999 数値の丸め方 検証計算結果」(Exce8,009kB)



JIS Z8401:1999 数値の丸め方 丸め誤差の検証計算結果 まとめ

仮定として、理想的な条件として次の様に設定します。
1.全データ数を n とし、 0 ~ 9 のそれぞれの出現率を 10%(同率)とする。
2.5 の 1 桁前の偶数・奇数の出現率を 50%(同率)とする。

計算結果は、次の様になります。
出現率出現数切り捨て・
切り上げ数
愚数・奇数出現率出現数切り捨て・
切り上げ数
010%n/10-0×n/10
110%n/10-1×n/10
210%n/10-2×n/10
310%n/10-3×n/10
410%n/10-4×n/10
510%n/10+5×n/10愚数50%n/10×1/2-5×n/10×1/2
奇数50%n/10×1/2+5×n/10×1/2
610%n/10+4×n/10
710%n/10+3×n/10
810%n/10+2×n/10
910%n/10+1×n/10

規則A・規則Bとも、1(-1)は9(+1)の切り上げに、2(-2)は8(+2)の切り上げに、
3(-3)は7(+3)の切り上げに、4(-4)は6(+4)の切り上げに使用されます。

規則B(四捨五入)では、5は全数切り上げられ10となります。
5と同数の5(実際のデータには、無いデータ)が加えられることになります。
これが、誤差を大きくする原因となります。

丸めの幅を w とすると、丸める桁は w × (1 / 10) となります。
それ故、 5 を切り上げするために加えられる数は、
w × (1 / 10) × 5 × n / 10
ですので、全データ数 n で割って平均を求めると次の様になります。
(w × (1 / 10) × 5 × n / 10) / n = 0.05 × w
規則B(四捨五入)では、無条件にこの値が平均に加えられることになります。

規則A(JIS丸め・再近接偶数への丸め)では、5の1桁前の偶数と奇数の出現率を同率としたので、
愚数(-5)は奇数(+5)の切り上げに使用され10となります。
加えられる数値は無いので、誤差の大きくする原因とはなりません。


参考 JIS Z8401:1961 数値の丸め方

やっと見つけました「JIS Z8401:1961」、この時すでに「最近接愚数への丸め」でした。
と言うより、四捨五入は一切触れられていません。
四捨五入は、JIS Z84001:1999 の改訂で、やっと規則Bとして存在がゆるされるようになったんですね。
それも、あくまでも参考1.の中でです。知りませんでした。

JIS_Z8401-1961_1
JIS_Z8401-1961_2

JIS Z8401:1961のExcelファイル」(ただし、誤字・脱字・誤植があるかも)



xls-hashimoto mougモーグ 回答集」に戻る

トップページに戻る

Copyright(C) xls-hashimoto 2011-2014 All Rights Reserved.