2

重複の可能性:
JavaScript の数学は壊れていますか?

面白い質問ですが、16.1 で JavaScript が「クレイジー」になるのはなぜですか? :)

コード:

var value1=16.1;
var value2=16.2;

console.log(value1 * 1000);
console.log(value2 * 1000);

出力:

16100.000000000002
16200 

なんで?

4

2 に答える 2

1

これは JavaScript の問題ではなく、浮動小数点数を使用するプログラミング言語に関連する問題です。

浮動小数点演算は壊れていますか?

根本的な問題の説明といくつかの有用な回避策についても.

于 2012-11-06T09:37:06.003 に答える
1

これは、javascript が内部的にすべてを double にキャストするためです。その結果、浮動小数点の不正確さにより、すべての計算に多少のノイズが含まれます。 浮動小数点の不正確さの例

この問題を解決する 1 つの方法は、すべての中間計算の後、最も近い int に丸めることです。

解答コピペはこちらから

于 2012-11-06T09:37:12.297 に答える