【发布时间】:2017-09-05 20:12:21
【问题描述】:
const x = new Int32Array(1);
x[0] = 699044815921;
console.log(x[0]);
-1034853327
谁能解释为什么会有一个负数?
【问题讨论】:
-
因为你没有使用无符号整数数组
-
en.wikipedia.org/wiki/Integer_overflow : "如果变量具有带符号整数类型,程序可能会假设变量始终包含正值。整数溢出会导致值回绕和变为负数,这违反了程序的假设并可能导致意外行为(例如,127 + 1 的 8 位整数加法得到 -128,即 128 的二进制补码)。”
-
尝试使用 intval() 来解决这个问题。
-
此外,这个数字甚至太大而无法用 32 位无符号整数表示。
-
如何解决它并存储大整数?首先要记住使用 float64 来存储
标签: javascript arrays integer