見出し画像

いにしえのプログラミング 14 コンピューターは計算が苦手か

(続く)コンピューターは計算が苦手と書くと、「そんなバカな」と言うかもしれません。多くの人は「コンピューターは電子計算機と言うのではないか」という反応かもしれません。しかし、コンピューターは「0」と「1」の二進法です。つまり、123×123を計算する時は、01111011×01111011となります。これが整数同士の掛け算ならば特に問題ないかもしれませんが、小数点がある計算になると、やっかいなことになります。たとえば1.23×1.23という計算です。このような場合は、誤差が出てきます。これは、「浮動小数点」という問題です。たとえば、もっとわかりやすい小数点を見てみましょう。「0.1」を2進数に直すとどうなるか。「0.0001100110011・・・・・」となり、0と1がどこまでも続くことになります。これでは計算ができませんので、どこかで切り捨てます。その結果、誤差が出てきます。

しかし、COBOLは、そういう方法ではなく、別の方法を使っています。二進化10進数という方法です。金利計算で「誤差」が出たら困ります。COBOLにおける変数の宣言は特徴的です。「変数」の宣言は、「KINGAKU 99999V99.」となります。つまり「V」が小数点を表していて、「V」より前が整数、「V」より後が小数点以下となります。この変数に、たとえば、「12345.67」という数字が入ります。「MOVE 12345.67 TO KENSU.」となります。C言語では、変数の宣言は、「float kensu = 12345.67;」でしょうか。(続く)

この記事が気に入ったらサポートをしてみませんか?