11

1.0010.001の 2 つのテキストボックス値を追加してから、 1.0019999999parseFloatを取得します。1.002が欲しいです。手伝って頂けますか?

4

5 に答える 5

27

Javascript Numberクラスには、toFixed()必要なものを取得する関数があります。

だからあなたはそうすることができ、それはあなたに1.002parseFloat("1.0019999").toFixed(3)を与えるでしょう。

パラメータ(この場合は3)は、小数点以下に表示する桁数です。

于 2008-10-06T12:15:39.870 に答える
10

0.002 を 2 進数として正確に表すことはできません。10 進法で 1/3 を表すことができないのと同じです。

1/3 = 0.33333... 繰り返します。基数 10 で数値を正確に表すには、無限の数の 10 進数が必要になります。

0.002 は、基数 10 で正確に表すことができる数値ですが (ここに示されているように)、コンピューターで使用される基数 2 では表せません。この数値を正確に表すには、無限の数の 2 進数が必要になります。

于 2008-10-06T11:21:21.790 に答える
6

JavaScript メソッドNumber.toFixed()Number.toPrecision()はここで役立ちますがString . 考えられる解決策は次のとおりです。

var x = parseFloat(parseFloat("1.0019999999").toPrecision(3));
于 2012-07-09T17:16:00.353 に答える
6

これは既知の問題です: 精度の問題と精度の問題の最小化を参照してください: 最小

于 2008-10-06T11:09:46.023 に答える
0

簡単に修正したい場合は、最も近い千分の1に丸めることができます

Math.round((1.001+0.001)*1000)/1000

于 2008-10-06T11:23:45.013 に答える