我有以下代码:
var str = "0x4000000000000000"; //4611686018427387904 decimal var val = parseInt(str); alert(val);
我得到这个值:“ 4611686018427388000”,这是0x4000000000000060
4611686018427388000
0x4000000000000060
我想知道JavaScript是否处理64位整数,还是我做错了什么?
JavaScript使用IEEE-754双精度(64位)格式表示数字。据我了解,这为您提供53位精度,或者15至16个十进制数字。您的数字位数超出了JavaScript所能应付的位数,因此最终得到了一个近似值。
这样并不是真正的“错误处理”,但是如果您需要对大数进行全精度处理,显然这不是很有用。周围有一些可以处理较大数字的JS库,例如BigNumber和Int64。