数字の丸め方

昔の話ですが、計量法の改正に伴って構造計算が SI 単位に移行する一時期、鉄筋の長期許容応力度の「丸め方」の違いにより、学会規準と法令の値に食い違いが出たことがありました。分かり切った話ではあるものの、この時私たちは、許容応力度が「丸めた数字」であることを再認識することになりました。
これに限らず、材料定数から積載荷重まで、構造計算には「丸めた数字」がいたる所に登場します。しかしその割には、設計者がその値を「丸められている」と意識することは少ないような気がする。
というわけで、今回は「数字の丸め方」について調べてみました。

「数字を丸める」とは、知りたい値に何がしかの幅がある時、その中の「信頼できる」部分だけを取り出して情報を共有しよう、という考え方です。
たとえば 1 ミリ単位の目盛が刻まれた定規で長さを測る場合、肉眼で 1/10 ミリまで正確に読み取るのは難しいでしょう。読み取った人がいたとしても、その値はとても信頼できない。そこで、目盛の間にあったら、それはどちらかの目盛に重なっているものとして 1 ミリ単位の数字を記録する。
それで良しとされるのは、計測対象に対してそれ以上の精度を要求していないからです。もしそれ以上の精度が要求されるのであれば、それに応じた物差しに変える必要がある。
たとえば 100m 走の記録は 1/100 秒単位で計測しますが、マラソンの記録は 1 秒単位です。マラソンの記録の 1 秒未満の差が問題にされることはないからですが、これは「信頼できない」というより「意味がない」の方かもしれません。

少し理論的に言うと、「数字を丸める」とは、それを「 X.XX 掛ける 10 の n 乗」という形で表わすことで、この時の X の個数が有効桁数です。この部分は信頼できる ( 意味がある ) が、その他は信頼できない ( 意味がない ) ので 0 で埋めてしまおう、という考え方。

基準法施行令に設計用の積載荷重が決められていて、たとえば居室は 1800 ( N ) です。これは 1.8 x 103 なので有効桁数は 2 。すべての値がこれで統一されているので数字は必ず 00 で終わっている。
これを「丸めの幅は 100 である」と言ったりします。100 未満の数字は信頼できない、というわけです。

次の例は JIS ( 日本工業規格 ) にある形鋼の断面性能表ですが、この数字も丸められています。
形鋼の寸法は決まっているのだから数字を丸めなくてもよさそうな気がしますが、形鋼の寸法には公認された誤差、「公差」があり、規格寸法通りに作られた部材は一つもない ( ほとんどの形鋼はマイナス公差の範囲内で規格より小さく作られているはず ) 。だからおそらく、規格寸法から精算したものよりも「丸めた値」の方を使うことを推奨しているのでしょう。
たとえば H-500 x 200 x 10 x 16 の断面性能は以下の通りです。

A Ix Iy ix iy Zx Zy
112 46 800 2140 20.4 4.36 1870 214

一見して分かるように、ここでの有効桁数は 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 が 経産省の管轄になっているという事情がからんでいたのかもしれません。

( 終わり )