ガウス記号
数を省略するには
多少の誤差を了解した上で、計算を簡略化するものに省略算があります。計算の速い人は数値を省略してざっと計算するのが得意ですよね。その省略算ですぐに思い浮かぶのが四捨五入です。
例えば、5.5を小数点一位で四捨五入すると6になります。つまり、省略したい桁の数字が0~4なら切り捨てて、5~9なら切り上げて省略した桁の1つ上の桁を1増やす手続きのことです。
日常生活でもよく使う四捨五入は、ガウス(1777~1855)の記号を使って求めることができます。ガウス記号は数値を[]で囲った[x]で表現されます。
小数点以下がカットされているのが分かります。ガウス記号の正確な定義は「xを越えない最大の整数」となっています。例では、5.5を越えない最大の整数ということで5ということになります。rpnではガウス記号は「i」を使うので、以下のように表現します。
5
なお、rpnにはガウス記号によく似た演算記号にfがあります。fを使うと小数点以下を無条件に切り落とすことができます。ガウス記号との違いは負の数の扱いです。
5 -6 5 -5
正の数である限り、iとfに違いはありません。
四捨五入の計算方法
では、ガウス記号を使うことで、四捨五入を計算してみましょう。四捨五入は、ある数値xに0.5を加え、その数を越えない最大の整数をとると、小数点以下を四捨五入することと同じになります。
つまり、rpnで小数点以下を四捨五入するには、四捨五入したい数字に0.5を加えてから、ガウス記号で計算すると出てきます。例えば、四捨五入したい数字が5.5の場合は以下のようになります。
6
5.4の場合は四捨五入すると5になるはずですね。試してみましょう。
5
きちんと四捨五入されていますよね。
ガウスの記号で曜日を計算
次に、もう少し複雑なガウス記号を使った応用例を示します。ある日付の曜日を知りたい時に以下の公式が使えます(1582年10月15日以降に対応)。
w = (y + [ --- ] - [ ----- ] + [ ----- ] + [ ------------ ] + d) % 7
4 100 400 5
ここで、yは西暦年(但し、月が1と2の場合は1を減じる)、mは月(但し、月が1と2の場合は12を加える)、dは日になります。ガウスの記号が多用されていますが、一つ例を挙げると
[ ------ ] = 499
4
ということになります(1999÷4=499.75)。
数式の最後に「% 7」という記号がありますが、これは7で割った余りを出す記号(剰余演算子)です。従って、上記の式を計算して出てくる数は結果的に0~6の数値のいずれかになります。そして、それら数値には以下の意味があります。
さっそく、実際の日付を試してみましょう。2000年1月1日の曜日を計算してみると、上の条件から、y=1999、m=13、d=1となるので(月が1月なので年から1を引いて、月に12を足している)、rpnで書き直すと以下のようになります。
6
答えは6なので、土曜日ということになりますね。正しいかどうかWindowsのカレンダーで確かめてみましょう。
この公式さえあれば、自由に曜日を計算することができます。自分の誕生日や身近な人の誕生日、記念日の曜日を思い起こせるでしょう。
以下を逆ポーランド記法式に変換せよ。
(1) 1030円の商品に5%の消費税を加える式。
(2) 1030円の商品に5%の消費税を加えて、小数点以下を四捨五入する式。
(3) 280人から13分の1の人を選び出し、端数を六捨七入する式。
…………………………………………………………………………………………