特定の浮動小数点の数値をテストしないでください.

476 ワード

Javascriptのデジタルタイプは64ビットのIEEE 754形式で格納されている浮動小数点数値計算で丸め誤差が発生する問題であり、これはIEEE 754値に基づく浮動小数点計算を用いる共通の病気である.
浮動小数点の数値の最高精度は17桁の小数であるが、算術計算を行うときの精度は整数に比べてはるかに低い.例えば、0.1プラス0.2の結果は0.3ではなく、0.30億00004です.この小さな丸め誤差は特定の浮動小数点値を試験できない原因となる.
たとえば:
//         !
if (a + b == 0.3){	
 alert("You got 0.3."); 
}
この例では、私たちがテストしたのは2つの数の和が0.3に等しいかどうかです.この二つの数が0.05と0.25だったら、或いは0.15と0.15は大丈夫です.
//       
0.1+0.2 != 0.3  
1.1+1.3 != 2.4