JavaScriptには、浮動点数の乗算操作で複数の小数条件があります。
これは、フローティングポイント数が操作後にバイナリに変換されるためですが、一部の小数はバイナリコーディング後に無限の循環を持ち、コンピューティングにエラーを引き起こし、他の言語にも同様の問題があります。
理由の説明は、Baiduから知ることを指します。
例:1038.1-1000
1038.1 = 10000001110.00011001100110011001100110011001100 .....
1000 = 1111101000
1038.1バイナリへの変換は、サイクルです。指定された10進数字として。
解決策:維持する10進数(4など)に基づいて、最初に積を計算するときに乗算(10^4)、次に計算結果(10^4)を分割し、最後に結果値数学の結果を取得します。ラウンド。
次のようにコードコードをコピーします。
var M1 = 2232.00、
パーセント=(10/100)、
合計=パーセント*m1;
アラート(合計); // 223.20000000000000002
Total = Math.Round(Total*10)/10;
アラート(合計); // 223.2