Why am I getting weird result using parseInt in node.js? (different result from chrome js console)
Undefined behavior occurs when the string being passed to parseInt has a leading 0, and you leave off the radix parameter.
An integer that represents the radix of the above mentioned string. Always specify this parameter to eliminate reader confusion and to guarantee predictable behavior. Different implementations produce different results when a radix is not specified.
Some browsers default to base 8, and some to base 10. I'm not sure what the docs say about Node, but clearly it's assuming base 8, since 3010123
in base 8 is 790611
in base 10.
You'll want to use:
parseInt("03010123", 10);
Related videos on Youtube
Renato Gama
AWS Certified Solutions Architect - Associate AWS Certified Developer - Associate Node.js developer
Updated on September 19, 2022Comments
-
Renato Gama over 1 year
I just noticed that:
//IN CHROME JS CONSOLE parseInt("03010123"); //prints: 3010123 //IN NODE.JS parseInt("03010123"); //prints: 790611
Since both are based on V8, why same operation yielding different results???
-
JJJ almost 11 years
-
Dek Dekku
-
-
Renato Gama almost 11 yearsthats it! thanks. you may want to improve your answer by adding this link as reference: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
Kiddo about 10 yearsyou can also use Number() as alternative.
-
Znarkus over 7 yearsNode 6.6:
parseInt("03010123");
-> 3010123