1

私はこれについて正解を見つけることができませんでした。仕様を確認しましたが、精度を定義するものが見つかりません。

Number.MAX_VALUE
    1.7976931348623157e+308
a = 9007199254740992
a == a-1
    false
a+1
    9007199254740992
a+2
    9007199254740994
a*a
    8.112963841460668e+31   
a*a == ((a*a)-1)
    true
a*a == ((a*a)*a)
    false
4

1 に答える 1

2
Math.pow( 2, 53 )

最大の整数です。その後、整数の精度が低下し始めます。

あなたはここでそれを見つけることができます:

仮数精度:53ビット(明示的に格納された52ビット)

「小数」については、その大きさに関係なく、正確な結果を得ることに頼ることはできません。

0.1 + 0.2 === 0.30000000000000004

ところで、上記の回避策を探している場合:

function round(num) {
     return Math.round( num * 1e9 ) / 1e9;
}

round(0.1 + 0.2) === 0.3
于 2012-08-09T21:50:30.137 に答える