JavaScript が浮動小数点数の積演算を実行する場合、小数点以下の桁数が複数発生することがあります。
これは、浮動小数点数が計算前にバイナリに変換されるためですが、バイナリ エンコード後の無限ループで一部の小数が出現し、これは他のプログラミング言語にも当てはまります。同様の質問。
その理由の説明は Baidu から判明しています:
例: find 1038.1-1000
1038.1=10000001110.0001100110011001100110011001100110011001100....
1 000 =1111101000
1038.1 変換 2 進数は無限に循環する 10 進数であり、1100 は近似値しか取れません。ブラウザのバージョンが高い場合は、toFixed() メソッドを使用して丸めます。 Number を小数点以下の桁数を指定した数値に変換します。
解決策: 保持する小数点以下の桁数 (4 など) に応じて、積を計算するときに最初に (10^4) を掛け、次に計算結果を (10^4) で割って、最後に結果を除算します 近似値を取得します Math.round