The beginning of infinity in JavaScript
Infinity begins relatively early in JavaScript:
What is going on here?
This is the most common way of representing floating point numbers. The left-hand side of the multiplication comprises the digits, the right-hand side moves the dot to the correct position (to the left if it is negative, to the right if it is positive).
Thus, the exponent of Math.pow(2, 1024) is out of range and Infinity is an error result.
> Math.pow(2, 1024)
Infinity
> Math.pow(2, 1023)
8.98846567431158e+307
What is going on here?
All numbers in JavaScript are floating point numbers and (roughly) encoded internally [1] as
1.f × 2p
This is the most common way of representing floating point numbers. The left-hand side of the multiplication comprises the digits, the right-hand side moves the dot to the correct position (to the left if it is negative, to the right if it is positive).
The mantissa is a binary 1, followed by a binary dot, followed by a 52 bit fraction f. The 11 bit exponent p has to be in the range
−1023 < p < 1024
Thus, the exponent of Math.pow(2, 1024) is out of range and Infinity is an error result.
Consult [1] if you want to know more about how numbers are encoded in JavaScript.
Comments
Post a Comment