JavaScript  そのまんまプログラミング
計算が苦手なコンピュータ


意外なことかと思われるでしょうが、コンピュータは時折計算ミスをおこします。下記は小数点が付いた数値を100回足し算した場合の問題です。

(数値を入れてボタンを押すと100回足し算をします)

 計算誤差は十進数と二進数の場合とでは起きる現象が異なるからです。コンピュータは十進数で表現された数値を、一旦二進数に変換して計算しています。ところが、例えば十進数の0.01は二進数に直すと無限小数になってしまいます。小数点以下の数値が無限桁ではいつまでたっても計算は終わりません。そのため、コンピュータはどこかでか計算を打ち切り、端数を切り捨てなければなりません。これが100回も繰り返されると誤差がはっきりして くるのです。

 この小数点の計算でおきる現象はJavaに限ったことではありません。C/C++、Fortran、BASIC、その他、数多くの言語で生じます。また、小数点の計算以外でも誤差は生じますので、プログラマは十二分にテストを繰り返さなければなりません。

 上記の場合の解決策は桁数で判断させます。何回足し算しても元の数値より長い小数点以下の桁が発生することはないわけですので、例えば 0.03 の結果は小数点第3位で四捨五入すれば 2.9999..... ではなく 3.00 と出せます。

 当サイトのJavaScriptのプログラムはソースコードを見ることができます。修正するなどして利用されてもいいのですが、利用分野によっては誤差が許されない場合があります。あなたの責任で使用してください。

 

ホームへ戻る

 

そのまんまプログラミング
Copyright (C) 2007 S.FUKAGAWA. All Rights Reserved.