2017-03-10 19 views
-2

なぜNumber.MAX_VALUE + 10 = 1.7976931348623157e + 308(Number.MAX_VALUEと同じですがNumber.MAX_VALUE * 2 =無限大ですか?Javascript Infinity加算と乗算

+1

コメントしますか? – caiocpricci2

+0

thx downvotingのための答えがより役に立ちます。私が数値の最大値を超えた場合、私は答えとして無限を得ることが期待されます。なぜ私は10のような小さな数字を追加すると表示されませんか? –

+0

私は下垂体も理解していませんでした。問題は非常に関連しています。 –

答えて

3

JavaScriptは、端数に52ビットを使用できるa floating point representationを使用します。一方、11ビットは指数に予約されています。

数値の精度は指数に依存します。 1e308の場合、この精度は約1e292です。したがって、小さいものはNumber.MAX_VALUEに追加されても変更されません。しかし、小数部(1e292など)のビットを変更するのに十分な大きさのものを追加すると、数値が変更されます。この表現にはNumber.MAX_VALUEより大きい数字はありません。Infinityを除き、後者は得られる値です。

+0

完璧な回答、ありがとう –