我有以下代码:
var str = "0x4000000000000000"; //4611686018427387904 decimal
var val = parseInt(str);
alert(val);
我得到这个值:“4611686018427388000
”,即 0x4000000000000060
我在想,是 JavaScript 对 64 位整数的处理不当还是我做错了什么?
最佳答案
JavaScript 使用 IEEE-754 表示数字 double (64 位)格式。据我了解,这为您提供了 53 位精度,或十五到十六位十进制数字。您的数字的位数超出了 JavaScript 的处理能力,因此您最终得到一个近似值。
这并不是真正的“处理不当”,但如果您需要对大量数据进行完全精确处理,显然它不是很有帮助。周围有一些 JS 库可以处理更大的数字,例如 BigNumber和 Int64 .
关于javascript - JavaScript 是否支持 64 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643626/