sidorares / json-bigint

JSON.parse/stringify with bigints support
MIT License
790 stars 189 forks source link

Add support for scientific notation and long decimal numbers #62

Closed loitly closed 2 years ago

loitly commented 2 years ago

Fix Uncaught SyntaxError: Cannot convert xxxxx to a BigInt when encountering numbers in scientific notation or a wide decimal number(>15 chars).

This PR uses Number.isSafeInteger instead of string.lenght > 15 to identify BigInt scenarios. It also treat numbers with fractional parts(decimal) or numbers in scientific notation as Number(double) instead of trying to convert it into BigInt. For example, 1.79e+308 should be treated as a double, not a long integer.

I added a test with additional test data to support my use case. It would be nice if you can merge my Pull Request. I am using my fork in the meantime.

sidorares commented 2 years ago

thanks @loitly !