在javascript中转换大数字

时间:2011-08-25 20:32:46

标签: javascript

在jsconsole.com或Web Inspector中粘贴数字t=3.7333333258105216E16后,我得到37333333258105220

parseFloat(3.7333333258105216E16)给出相同的结果。

是什么原因?

3 个答案:

答案 0 :(得分:3)

JavaScript将数字表示为浮点数。该存储格式由64位组成。一位用于符号,11位用于10的幂乘以数字,而52位用于该数字。

由于上述原因,数字可以与1/2^521 / 4,503,599,627,370,496相符。因此,数字精确到这个分数。有关浮点数的更多信息,请查看this wikipedia page

我通过尝试向4,503,599,627,370,495添加一个来测试它。它到达4,503,599,627,370,496,但没有超过它。 Here's测试的小提琴。

答案 1 :(得分:2)

您正在遇到浮点临近。根据IEEE 754标准,JavaScript编号实现为双精度,64位浮点数。

答案 2 :(得分:1)

您无法始终准确地表示二进制中的浮点十进制数。它在数字末尾失去精度,因此它可以适合64位。