JavaScript不能处理64位整数,可以吗?

我想知道JavaScript是不是处理64位整数或我做错了什么?

我有以下代码:

var str = "0x4000000000000000"; //4611686018427387904 decimal var val = parseInt(str); alert(val); 

我得到这个值:“4611686018427388000”,这是0x4000000000000060

JavaScript代表使用IEEE-754双精度(64位)格式的数字。 据我所知,这给你53位精度,或十五至十六位十进制数字。 你的电话号码比JavaScript所能处理的位数多,所以你最终得到一个近似值。

这并不是真正的“error handling”,但是如果你需要大量的精确度,这显然不是很有帮助。 有几个JS库可以处理更大的数字,例如BigNumber和Int64 。