ホームページ  >  記事  >  ウェブフロントエンド  >  Javascript浮動小数点積演算における小数点以下複数桁の解決策_JavaScriptスキル

Javascript浮動小数点積演算における小数点以下複数桁の解決策_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:59:491647ブラウズ

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

コードをコピー コードは次のとおりです:

var m1 = 2232.00,
percent = (10/100),
total = パーセント*m1;
alert(total);//223.20000000000002

total = Math.round( total*10)/10;
alert(total);//223.2
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。