数字の丸め方
昔の話ですが、計量法の改正に伴って構造計算が SI 単位に移行する一時期、鉄筋の長期許容応力度の「丸め方」の違いにより、学会規準と法令の値に食い違いが出たことがありました。分かり切った話ではあるものの、この時私たちは、許容応力度が「丸めた数字」であることを再認識することになりました。
一見して分かるように、ここでの有効桁数は 3 です。 ( 「スマホで構造計算」の「鋼材一覧」によれば ) 規格寸法から精算した Ix は 46811、Iy は 2138 ですから、おそらくここでは、単純な四捨五入によって数字を丸めているのでしょう。 このように、数字の丸めには一般に「四捨五入」が使われますが、ものによっては、単純な四捨五入ではうまくない場合もある。そのあたりの方法、つまり「数字の丸め方」も JIS に定められています。 以下に JIS Z 8401 の内容を紹介しておきましょう。 小数以下 1 位までが既知で、2.0 より大きく 3.0 よりも小さい数字、つまり 2.1 / 2.2 … / 2.9 の集合があったとします。ここで、小数 1 位の数 ( 1 から 9 ) をランダムに発生させ、大きな集合を作ってその平均値を求めれば、その値は限りなく 2.5 に近くなります。これは当たり前。 では次に、おのおのの数字を四捨五入して集計した場合はどうなるか? 四捨五入して 2 になるものと 3 になるものがほぼ同数で、平均すれば 2.5 になる、と考えるのは間違い。四捨五入して 2 になるのは 2.1 / 2.2 / 2.3 / 2.4 の 4 つなのに対し、3 になるのは 2.5 / 2.6 / 2.7 / 2.8 / 2.9 の計 5 つ。だから全体として 3 になる数の方が多いのです。 これは不公平です。場合によっては数値の公正さを欠くことにもなりかねませんが、それもこれも、真ん中にある 5 という数字をつねに切り上げているからです。 そこで、JIS では以下のようなルールを提唱しています。 ・末尾の数字 5 の一つ前が偶数 ( 0 / 2 / 4 / 6 / 8 ) ならば切り捨てる ・末尾の数字 5 の一つ前が奇数 ( 1 / 3 / 5 / 7 / 9 ) ならば切り上げる このルールにしたがうと、2.5 は 2、3.5 は 4 です。 今あげた例では数字の範囲を「2 から 3 の間」としたので、このルールを適用しても不公平さは変わりませんが、範囲をもっと広げ、「1 から 100 の間」のようにしてみればその効果が分かるでしょう。末尾の 5 の前の数字の奇数・偶数は確率的に半々なので、切り上げられたり切り捨てられたり、結果的には全体が「平準化」するだろう、という理屈です。 ただし、一般の構造計算でこのような四捨五入が使われることはありません。また基本的に、プログラムの内部で丸めた数値を受け渡すことも、特定の桁以降が未知であるような値を扱うこともありません。 プログラムで数値の丸めが行われるのは、通常、ユーザーに最終的な結果を通知する場合に限られますが、この場合は「ふつうの四捨五入」が使われます。 ところで、「四捨五入」ならぬ「二捨三入」という丸め方もあって、こちらは構造計算に関係があります。 計量法の改正により SI 単位が導入された際、それまで常用していた重力単位の値をどのように換算するかが問題になりました。これについては冒頭でもふれましたが、そこで取り上げた鉄筋の強度を例にしながら話を進めましょう。 かつて SD30 という鉄筋材料がありました。降伏点の応力度は 3000 ( kg/cm2 ) 。これに 9.8 ( 話がややこしくなるので小数二位以下は省く ) を掛けて 100 で割ると SI 単位に変換され、294 ( N/mm2 ) になります。 この値を四捨五入すれば 290 。別にこれでもよかったはずですが、JIS ではこれを二捨三入して 295 とし、呼び名も SD295 に改めました。 二捨三入のルールとは以下の通りです。 ・末尾の数字が 1 か 2 なら切り捨てる ・末尾の数字が 8 か 9 なら切り上げる ・末尾の数字がそれ以外 ( 3 / 4 / 5 / 6 / 7 ) なら 5 にする 現在の設計規準では降伏点をそのまま短期許容応力度にしますから、JIS の値に従えば、こちらは 295 で決まり。問題は、これを安全率 1.5 で割った長期の許容応力度の方です。 かつては 3000 / 1.5 = 2000 という分かりやすい値でしたが、上と同じやり方でこれを変換すると 196 になります。1999 年版の学会規準ではこれを四捨五入 ( ? ) して 200 にしました。一方、翌年に出された国交省告示ではこれを二捨三入した 195 という値にしていて、これが何かと混乱を招きました。 さきほど、「学会規準では 196 を四捨五入して 200 にした」と書きましたが、もしかすると違うかもしれません。「従来の値 2000 を換算係数 10 を用いて SI 単位に直した」のかもしれない。 今さらこんなことを言っても始まりませんが、最初から換算係数を 10 にし、降伏点の値を 300 にしておけばこういう混乱は起きなかったはずです。 設計者の立場からすれば、9.8 と 10 の違いはたんなる「丸め誤差」にしか見えない。詳しいことは知りませんが、ここにはもしかすると、JIS が 経産省の管轄になっているという事情がからんでいたのかもしれません。 ( 終わり ) ツイート |