0

編集:回答が見つかりました。さらにコメント/回答する必要はありません、ありがとうございます!

スクリプトで何が起こっているのかわかりません。おそらくこれと非常によく似た質問があることはわかっていますが、次のようになります。

console.log( ( 3 * 0.10 ) ); 
= 0.3000000000004 ( estimated the zeros, but close ) 

私は試しparseInt()てみ.1まし 0.1た。なぜそれは私に与えない0.3のですか?.

console.log( ( 2 * 0.10 ) ); 
= 0.2 

誰かがこれで私を助けることができますか?

4

3 に答える 3

3

これは、実数の範囲全体をマッピングできないために発生します。w:floating pointを参照してください。

于 2013-01-11T22:15:15.090 に答える
1

JavaScript はバイナリ フロートを使用します。0.1orを有限長の 2 進数として表す方法はありません0.3。ちょうど1/310 進数として書くことができないのと同じです。

于 2013-01-11T22:15:25.963 に答える
1

これは、数値の 2 進表現で起こることです。0.3 の「正確な」表現を 2 進数で作成することはできないため、コンピューターが数値を変換するときに、可能な限り最も近い数値を作成します。この場合、正確には 0.3 ではありません。メソッドを使用して、出力をフォーマットすることでこれを回避できます.toFixed()。あなたの場合、有効数字を1つだけ出力したい場合は、

var result
result = 3 * 0.10
console.log( result.toFixed(1) )
于 2013-01-11T22:34:46.080 に答える