javascript - 为什么这些二进制表示会产生相同的数字?

标签 javascript binary ieee-754

根据文档,可以使用 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

关于javascript - 为什么这些二进制表示会产生相同的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40350450/

相关文章:

javascript - 使用 Chrome Devtools 查找哪个变量保存有值

javascript - 如何在Nodejs中实例化 Controller 中的模型?

javascript - 循环遍历一组元素 jQuery

javascript - 在javascript中获取值数组

Python:二进制/十六进制字符串转换?

java - 如何读取二进制文件中的整数和日期

java - 使用数组将二进制转换为十进制

Java/C : OpenJDK native tanh() implementation wrong?

floating-point - 是否有x的浮点值,x-x == 0为false?

python - 如何检测/修复此 32 位 FP 乘法实现中的舍入错误?