2017-05-02 8 views
0
function a (n){return (1+1/n) ** n } 

なぜ自然対数のE === 1

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)

+0

この質問に関連する: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 –

+0

'** n'を付けずに関数を試して、興味深いものが見つかるかどうか確認してください。 –

+0

@ Qantas94Heavy 'Number.MAX_SAFE_INTEGER'はどのように計算されますか? – user7924038

答えて

0

9007199254740991 ECMAScriptの計算(また、一定Number.MAX_SAFE_INTEGERとして事前定義)で使用するための最大の安全な整数です。

これは、倍精度浮動小数点数の計算を行うJavaScriptの計算の限界です。この定数を超えると、9007199254740992 == 9007199254740993と評価すると、予測できない結果がいつでも発生する可能性があります(true)。

ここにはdocumentation of Number.MAX_SAFE_INTEGERがあります。

+0

最大の安全な整数がある理由は何ですか?安全であることは何ですか? – user7924038

+0

まもなく、JavaScriptではすべての数値が 'double'であり、「安全でない」数値の計算に丸めがあります。これは、' x + 1'のようなものが 'x + 2'に相当します。正しい。私はこれをよく説明する文書へのリンクを掲載しています。 – Lukasz032

関連する問題