将字符串转换为数字,生成不同的数字
问题描述:
当我尝试将从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
答
在javascript号码类型被表示为双精度浮点数,因此,它传递给parseInt函数,parseFloat等的值是超过9007199254740992(ECMAScirpt Numbers specification),它被转换为适合数字类型。
+0
谢谢,我明白了。 javascript没有64位整数,与php相同 – Leric 2012-03-13 10:35:53
你试过不同的号码还是只有135601920000000040?如果你尝试不同,结果是什么?你能看到任何可能导致解决方案的模式吗? – Chris 2012-03-13 10:01:31
Fx太:http://jsfiddle.net/mplungjan/VqQDH/ – mplungjan 2012-03-13 10:03:19