为什么当我将JavaScript记录到控制台时,它会将这个数字四舍五入



为什么:

console.log( 9999999999999999 ); //log 10000000000000000

这篇文章提到了它,但我实际上不明白为什么

因为javascript处理这样的数字。你应该考虑到不会失败。你可以在这里阅读。http://speakingjs.com/es5/ch11.html

对于54位,最低有效位始终为0,对于55位,两个最低有效位总是为0,依此类推。这意味着对于54位来说,我们只能表示每秒钟的数字,对于55比特来说,只能表示每四秒钟的数字。依此类推。例如:

Math.pow(2,53(-1//确定9007199254740991
数学.pow(2,53(//确定9007199254740992
Math.pow(2,53(+1//无法表示9007199254740992
数学.pow(2,53(+2//确定9007199254740994

最佳实践

如果您使用大小不超过53位的整数,您就可以了。不幸的是,在编程(Twitter ID、数据库等(中,您经常会遇到64位无符号整数。这些整数必须存储在JavaScript中的字符串中。如果你想用这样的整数执行算术运算,你需要特殊的库。有计划将更大的整数引入JavaScript,但这需要一段时间。

最新更新