我在我的代码中使用Math.pow()函数但是当我尝试执行以下条件时,此函数返回不需要的无穷大。我正在寻找替代解决方案。
math.pow(451939.27436410653,299);
如果有人有任何想法,请帮忙
答案 0 :(得分:1)
你期待什么结果?结果非常大,超出了传统浮点格式的表示能力。如果在现实世界的计算中真的有必要,我会感到惊讶。你能提供一些背景吗?
如果真的有必要,或许你可以通过使用对数来解决困难。如果y = Math.pow(451939,299)那么 Math.log(y)= Math.log(451939)* 299。
您可以通过添加/减去日志来进行任何乘法/除法,然后在末尾执行Math.exp以生成结果。
这可能比使用像bignumber.js这样的特殊库来进行任意精度算术更容易。例如,下面的代码返回“7.395117980030695 x 10 ^ 1690”,小数点前有1691位数。
let log10Y=Math.log(451939.27436410653)*299/Math.log(10);
let b = Math.floor(log10Y);
let a = log10Y-b;
console.log("Answer: ",10**a," x 10^",b);
答案 1 :(得分:0)
如果您想存储如此庞大的数字,可以使用像bignumber.js这样的库。它存储浮点值,其指数尽可能大,以便存储它们。