2017-03-10 88 views
-2

为什么Number.MAX_VALUE + 10 = 1.7976931348623157e + 308(与Number.MAX_VALUE相同),但是Number.MAX_VALUE * 2 = Infinity?Javascript Infinity add and multiply

+1

Downvoters care to comment? – caiocpricci2

+0

thx为downvoting但答案会更有帮助。如果我超过了一个数字的最大值,我希望得到Infinity作为答案。为什么当我添加一个像10这样的低数字时不会出现? –

+0

我也不明白downvotes。这个问题非常相关。 –

回答

3

JavaScript使用a floating point representation其中有52位可用于分数,而11位是为指数保留。

数字的精度取决于指数。对于1e308,这个精度约为1e292。因此,小于Number.MAX_VALUE的任何内容都不会改变它。但是如果你添加了一些足够重要的东西来改变分数(比如1e292),那么数字就会改变。由于此表示中没有比Number.MAX_VALUE更大的数字,除了Infinity,后者是您获得的值。

+0

完美答案,谢谢 –