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

问题描述:

当我尝试将从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的,它也发生在JS解释在Firefox

+0

你试过不同的号码还是只有135601920000000040?如果你尝试不同,结果是什么?你能看到任何可能导致解决方案的模式吗? – Chris 2012-03-13 10:01:31

+0

Fx太:http://jsfiddle.net/mplungjan/VqQDH/ – mplungjan 2012-03-13 10:03:19

在javascript号码类型被表示为双精度浮点数,因此,它传递给parseInt函数,parseFloat等的值是超过9007199254740992(ECMAScirpt Numbers specification),它被转换为适合数字类型。

+0

谢谢,我明白了。 javascript没有64位整数,与php相同 – Leric 2012-03-13 10:35:53