A leading zero to some number converting the number to some unknown number format. for example :

`017`

is getting converted to `15`

`037`

is getting converted to `31`

Also found that numbers having 8 0r 9 at end are remaining same for example :

`018`

is `18`

`038`

is `38`

`o59`

is `59`

one more thing that I found is

for each next range of 10 the difference between converted value and the actual value get incremented by 2

for example :

for range `00-09`

difference is `0`

i.e value of 07 will be 7, 04 will be 4

for range `010-019`

difference is `2`

value of 017 will be 15, 013 will be 11

for range `020-029`

difference is `4`

value of 027 will be 23, 021 will be 17

and so on..

here is a snipet for test http://jsfiddle.net/rajubera/BxQHF/

I am not getting why this is happening ?

Please help me how to get the correct decimal number from the number having leading zero ?

If there is a leading 0, it is converting it to octal (base 8) as long as its a valid number in base 8 (no numbers greater than 7).

For example:

`017`

in base 8 is 1 * 8 + 7 = 15
`037`

in base 8 is 3 * 8 + 7 = 31

`018`

is converted to `18`

because `018`

isn't a valid number in base 8

Note that the behavior as to which base the number is converted to by default can be browser-specific, so its important to always specify the base/radix when using `parseInt`

:

`parseInt("017",10) === 17`

UPDATE based on comments:

`parseInt`

expects a `string`

as the first argument, so

`parseInt("012",10) === 12`

One of the reasons to `"use strict";`

```
(function() {"use strict"; 017})()
// Firefox => SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated; for octal literals use the \"0o\" prefix instead
// Chrome, Node => SyntaxError: Octal literals are not allowed in strict mode.
```

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal

©2020 All rights reserved.