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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With