将字符串转换为数字,会产生不同的数字

时间:2012-03-13 09:57:58

标签: javascript node.js

当我尝试将从php传递的bigint转换为nodejs中的整数时,结果总是不同的,我无法弄清楚它有什么问题。

> var a = parseInt('135601920000000040', 10);
undefined
> a
135601920000000030
> var a = parseFloat('135601920000000040');
undefined
> a
135601920000000030
> var n = Number('135601920000000040');
undefined
> n
135601920000000030

不仅是node.js,它还发生在Firefox中的js解释器

1 个答案:

答案 0 :(得分:3)

javascript中的Number类型表示为双精度浮点数,因此,传递给parseInt,parseFloat等的值大于9007199254740992(ECMAScirpt Numbers specification),它被路由到适合Number类型。