ホームページ > 記事 > ウェブフロントエンド > Javascript浮動小数点演算精度問題の分析と解決_JavaScriptスキル
分析
JavaScript には Number という数値型が 1 つだけあり、JavaScript のすべての数値は IEEE-754 標準形式で表されます。 浮動小数点数の精度の問題は JavaScript に固有のものではありません。これは、一部の小数は 2 進数で表すと桁数が無限になるためです。
10 進法 0.0100 1100 1100 1100 ...
0.4 0.0110 0110 0110 0110 ...
0.5 0.1
0.6 0.1001 1001 1001 1001 ...
たとえば 1.1 の場合、プログラムは実際には「1.1」を表現できませんが、ある程度の精度しか達成できません。これは避けられない精度の損失です。
JavaScript では問題はさらに複雑です。ここでは Chrome でのテスト データをいくつか示します。
入力
1.0-0.9 == 0.1 False
1.0-0.8 == 0.2 False1.0-0.7 == 0.3 False
1.0-0.6 == 0.4 True
1.0- 0.5 == 0.5 真
1.0-0.4 == 0.6 真
1.0-0.3 == 0.7 真
1.0-0.2 == 0.8 真
1.0-0.1 == 0.9 真
解決策
コードは次のとおりです: