Pythonと浮動小数点

Pythonだけではありませんが、プログラミングを学ぶ中で最も不思議と思うことは、7/3(7÷3)の結果が 2.3333333333333335となり、173/3(173÷3)が
57.666666666666667となることです。整数型同士での計算であれば誤差が出ることはまずありませんが、浮動小数点型がから
んでくると、おかしなことになってしまうことが間々あります。これは、そもそもコンピュータでは、数値計算を 1 と 0 の 2 つの数字で取り扱っており、この 2 進数によると小数点の計算で誤差が出るのは致し方ないということなのです。
Python では割り算が割り切れないときには、整数部分と合わせておおむね 17 桁を使って表示をします。このような桁数を有効桁数といいます。誤差といっても 10 の 17 乗分の1、つまり 10 京分に過ぎません。ちなみに京(きょう)というのは数字の単位で、1 兆の 1万倍です。通常の計算であれば、この程度の誤差は全く問題になりません。でも誤った計算をしておきながら、堂々と「これでいいのだ」といわれてもちょっと納得いきません。

ここいらを前からすこしずつ調べていましたが、ようやく初めの部分をUPすることができました。

Pythonの小数型で扱うことができる数の大きさ

とりあえず本日は浮動小数点方式の仮数部を書きましたが、53ビットで表現できない部分を丸めるところにおかしなことの原因があるようです。

画像1

このあたりを詳しく書いた本は意外と見当たらないので、少しでも分かりやすいものができればと思います。

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