function a (n){return (1+1/n) ** n }
a(9007199254740991) === 7.389056098930647
が、N> 9007199254740991関数は1を返します?もし
https://zh.wikipedia.org/wiki/E_(%E6%95%B0%E5%AD%A6%E5%B8%B8%E6%95%B0)
function a (n){return (1+1/n) ** n }
a(9007199254740991) === 7.389056098930647
が、N> 9007199254740991関数は1を返します?もし
https://zh.wikipedia.org/wiki/E_(%E6%95%B0%E5%AD%A6%E5%B8%B8%E6%95%B0)
9007199254740991
ECMAScriptの計算(また、一定Number.MAX_SAFE_INTEGER
として事前定義)で使用するための最大の安全な整数です。
これは、倍精度浮動小数点数の計算を行うJavaScriptの計算の限界です。この定数を超えると、9007199254740992 == 9007199254740993
と評価すると、予測できない結果がいつでも発生する可能性があります(true
)。
ここにはdocumentation of Number.MAX_SAFE_INTEGER
があります。
最大の安全な整数がある理由は何ですか?安全であることは何ですか? – user7924038
まもなく、JavaScriptではすべての数値が 'double'であり、「安全でない」数値の計算に丸めがあります。これは、' x + 1'のようなものが 'x + 2'に相当します。正しい。私はこれをよく説明する文書へのリンクを掲載しています。 – Lukasz032
この質問に関連する:http://stackoverflow.com/questions/26380364/why-is-number-max-safe-integer-9-007-199-254-740-991-and-not-9- 007-199-254-740-9 –
'** n'を付けずに関数を試して、興味深いものが見つかるかどうか確認してください。 –
@ Qantas94Heavy 'Number.MAX_SAFE_INTEGER'はどのように計算されますか? – user7924038