编程语言
首页 > 编程语言> > Javascript-为什么这些二进制表示形式产生相同的数字?

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