53

In JavaScript, I have a number which is 21 digits, and I want to parse it.

Does a parseDouble method exist in JavaScript?

2 Answers 2

93

It's not possible to natively deal with a 21-digit precision number in JavaScript.

JavaScript only has one kind of number: "number", which is a IEEE-754 Double Precision ("double") value. As such, parseFloat in JavaScript is the equivalent of a "parse double" in other languages.

However, a number/"double" only provides 16 significant digits (decimal) of precision and so reading in a number with 21-digits will lose the 5 least significant digits1.

For more precision (or accuracy) a "big number" library must be used;

1 Information can be lost when encoding as an IEEE "double", which cannot encode all decimal values exactly, but that's another question..

Sign up to request clarification or add additional context in comments.

2 Comments

I have to parse a 21 digit number which does not have any decimal places. BigInteger and BigNumber can only parse upto 16 digits with precision. But I have a number larger than that and I need that to be parsed precisely. Pls advise. Suggestions with syntax highly appreciated. Thank you.
@PriyeshShah You need to start with a string and pass this to BigInteger/BigNumber to parse. As soon as you have a number value in JavaScript then it's subject to the limits above - that is, it has already lost the less significant digits.
0

This many years later, we have native support for big integers. So if the number is an integer number, parse it as a BigInt:

const s = "12345678901234567890123";
const big = BigInt(s);
console.log("Number: " + big);

If the number has a fractional part, use a Big Decimal implementation. For instance, you could check out the one I posted here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.