javascript tutorial - [Solved-5 Solutions] parseInt - javascript - java script - javascript array
Problem:
Why does parseInt(1/0, 19) return 18 ?
Solution 1:
> parseInt(1 / 0, 19)
> 18click below button to copy the code. By JavaScript tutorial team
Solution 2:
- The result of
1/0is Infinity. - parseInt treats its first argument as a string which means first of all
Infinity.toString()is called, producing the string "Infinity". So it works the same as if you asked it to convert "Infinity" in base 19 to decimal. - Here are the digits in base 19 along with their decimal values:
Base 19 Base 10 (decimal)
---------------------------
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
b 11
c 12
d 13
e 14
f 15
g 16
h 17
i 18
click below button to copy the code. By JavaScript tutorial team
Solution 3:
Here's the sequence of events:
-
1/0evaluates toInfinity -
parseIntreadsInfinityand happily notes that I is 18 in base 19 -
parseIntignores the remainder of the string, since it can't be converted.
Solution 4:
var num = 1 / 0;
var numInBase19 = num.toString(19); // returns the string "Infinity"click below button to copy the code. By JavaScript tutorial team
Solution 5:
parseInt(1/0,19)is equivalent toparseInt("Infinity",19)- Within base 19 numbers
0-9andA-I (or a-i)are a valid numbers. So, from the "Infinity" it takesIof base 19 and converts to base 10 which becomes 18 Then it tries to take the next character i.e.nwhich is not present in base 19 so discards next characters (as per javascript's behavior of converting string to number) - So, if we write
parseInt("Infinity",19)ORparseInt("I",19)OR vparseInt("i",19) the result will be same i.e18. - Now, if we write
parseInt("I0",19)the result will be342asI X 19 (the base)^1 + 0 X 19^0=18 X 19^1 + 0 X 19^0=18 X 19 + 0 X 1=342 - Similarly,
parseInt("I11",19)will result in6518
i.e.
18 X 19^2 + 1 X 19^1 + 1 X 19^0
= 18 X 19^2 + 1 X 19^1 + 1 X 19^0
= 18 X 361 + 1 X 19 + 1 X 1
= 6498 + 19 + 1
= 6518