我试图将大/非常长的数字字符串转换为数字:
+'-000000098765432112345.67898765432100000';
'-000000098765432112345.67898765432100000'*1;
parseFloat('-000000098765432112345.67898765432100000', 10);
所有这些测试都会输出-98765432112345.67
而不是预期的-98765432112345.678987654321
。
为什么会这样?
NB:建议的重复解决方案无法回答我的问题,只是解决了问题。
答案 0 :(得分:2)
大数字的常见原因是溢出:https://en.wikipedia.org/wiki/Arithmetic_overflow。
这回答了类似的问题'在Javascript':What is JavaScript's highest integer value that a Number can go to without losing precision?
中会出现溢出的情况