■演算誤差とは
0.1を10回足したら、いくつになるでしょうか? 答えは1です。しかし、この計算をコンピューターで計算を行うと1にならずに0.999999になってしまいます。つまり計算による誤差が発生してしまうのです。コンピューターで行われる小数値の計算は演算誤差が発生します。これは内部では10進数でなく2進数に変換されて計算されるためです。内部が10進数、BCD演算が行われている場合には、このような演算誤差は非常に少なくなります。詳しくは演算誤差というキーワードで検索して調べてみてください。■ブラウザでの結果
ここでは各ブラウザでの演算誤差の結果を示します。0.1を10回計算した結果と0.1と0.4-0.3の計算結果を比較したもので行っています。ブラウザ名の部分をクリックすると実際の実行画面をキャプチャーした画像が表示されます。| OS | ブラウザ | 0.1を10回計算した結果 | 0.1と0.4-0.3の比較結果 |
| Windows 98 | Internet Explorer 4.0 | × | × |
| Windows 2000 | Internet Explorer 5.0 | × | × |
| Windows Me | Internet Explorer 5.5 | × | × |
| Windows XP Home | Internet Explorer 6.0 | × | × |
| Windows XP Home | Netscape 6.2 | × | × |
| Windows XP Home | Netscape 7.1 | × | × |
| Windows XP Home | Firefox 1.0beta | × | × |
| Windows XP Home | Opera 6.06 | × | × |
| Windows XP Home | Opera 7.23 | × | × |
| Windows XP Professional (SP2) | Internet Explorer 6.0 | × | × |
| Macintosh (MacOS X 10.3) | Internet Explorer 5.2.3 | × | × |
| Macintosh (MacOS X 10.3) | Netscape 7.1 | × | × |
| Macintosh (MacOS X 10.3) | Mozilla 1.7.2 | × | × |
| Macintosh (MacOS X 10.3) | Firefox 0.8 | × | × |
| Macintosh (MacOS X 10.3) | Opera 6.03 | × | × |
| Macintosh (MacOS X 10.3) | Opera 7.5 | × | × |
| Macintosh (MacOS X 10.3) | iCab 2.9.8 | ○ | × |
スクリプトは以下のようになっています。こちらのページで実行できます。
<html>
<head>
<title>演算誤差テスト</title>
</head>
<body>
<h1>演算誤差テスト</h1>
<br>
■0.1を10回加算<br>
<script language="JavaScript"><!--
for (i=0,n=0; i<10; n+=0.1,i++);
document.write(n);
// --></script>
<br>
<hr>
<br>
■0.1と0.4-0.3の結果の比較<br>
<script language="JavaScript"><!--
a = 0.1;
b = 0.4-0.3;
if (a == b) document.write("0.1と0.4-0.3は同じ");
if (a < b) document.write("0.1は0.4-0.3より小さい");
if (a > b) document.write("0.1は0.4-0.3より大きい");
// --></script>
<br>
<hr>
<br>
</body>
</html>