Javascript-为什么这些二进制表示形式产生相同的数字?
作者:互联网
根据文档,可以使用parseInt(string, base)将数字的二进制表示形式转换为数字本身.
例如,
var number = parseInt("10100", 2);
// number is 20
但是,请看下一个示例:
var number = parseInt("1000110011000011101000010100000110011110010111111100011010000", 2);
// number is 1267891011121314000
var number = parseInt("1000110011000011101000010100000110011110010111111100100000000", 2);
// number is 1267891011121314000
这怎么可能?
请注意,除了后9位,二进制数几乎相同.
解决方法:
1267891011121314000在Number.MAX_SAFE_INTEGER(9007199254740991)上.它不能安全地在内存中表示它.
看一下这个经典示例:
1267891011121314000 == 1267891011121314001 // true
标签:binary,ieee-754,javascript 来源: https://codeday.me/bug/20191118/2024905.html