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)
> 18
click below button to copy the code. By JavaScript tutorial team

Solution 2:

  • The result of 1/0 is 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/0 evaluates to Infinity
  • parseInt reads Infinity and happily notes that I is 18 in base 19
  • parseInt ignores 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 to parseInt("Infinity",19)
  • Within base 19 numbers 0-9 and A-I (or a-i) are a valid numbers. So, from the "Infinity" it takes I of base 19 and converts to base 10 which becomes 18 Then it tries to take the next character i.e. n which 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) OR parseInt("I",19) OR vparseInt("i",19) the result will be same i.e 18.
  • Now, if we write parseInt("I0",19) the result will be 342 as I 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 in 6518
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
click below button to copy the code. By JavaScript tutorial team

Related Searches to javascript tutorial - parseInt