为什么我从两种形式的相同数学表达式中得到不同的结果[javascript]?

知道:x^2 - 4y^2 = (x - 2y)*(x + 2y)

我写了以下代码:

x = 450000005;
y = 225000002;
n = x * x - 4 * y * y;
m = (x - 2 * y) * (x + 2 * y);
console.log(n, m);

回答

您的第一个计算超出Number.MAX_SAFE_INTEGER,这意味着它无法准确表示。使用BigInts 将产生正确的结果。

console.log("Is 450000005 * 450000005 (x * x) safe?",
  Number.isSafeInteger(450000005 * 450000005));
x = 450000005n;
y = 225000002n;
n = x * x - 4n * y * y;
m = (x - 2n * y) * (x + 2n * y);
console.log(n.toString(), m.toString());


以上是为什么我从两种形式的相同数学表达式中得到不同的结果[javascript]?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>