An interesting item from stackoverflow via /r/javascript!
Why does parseInt(1/0, 18) == NaN
, but parseInt(1/0, 19) == 18
and parseInt(1/0, 25) == 185011843
?
Javascript apparently has the division by zero problem solved, due to (x > 0)/0
being equal to Infinity
, an object (constant?) in JS in the same vein as NaN
. It interacts with NaN
as well, in that Infinity - Infinity
or Infinity / Infinity == NaN
, but Infinity + Infinity
or Infinity * Infinity == Infinity
. Also there’s -Infinity, just for fun.
When parseInt()
ing the value infinity, internally it must run .toString()
to get the value which returns "Infinity"
. Base 19 has the numbers 0-9
and then goes on to the letters a-i
(there’s a table in the stackoverflow article) of which the first letter of "Infinity"
matches, returning 18
, when you up the base to 25, all the letters up to n
are parsed turning the ‘number’ "Infinity"
into 185011843
. Interestingly that also means that parseInt(Infinity/Infinity, 25) == 14648
!