0

如何使用 JavaScript计算98 的 exp(13-5) 次幂?

是这样吗?

Math.pow(98,Math.exp(8))
4

1 回答 1

0

当我需要处理会溢出标准浮点类型的大正数时,我会将这些数字存储为数字的对数。因此,我不会计算 98 的 exp(8) 次方,而是计算 exp(8) * log(98) 并使用它。我(还)没有遇到过这种情况,即使这种方法也不足以存储我需要的数字。但是,我遇到了几种情况,其中正确答案涉及将非常大的数字乘以非常小的数字,并且在这种情况下,使用我所描述的日志避免了会导致错误答案的上溢/下溢。

更新:我怀疑这是关于如何解决 98 ^ exp(8) 对于标准浮点类型来说太大的问题的某种家庭作业问题。在这种情况下,我认为我使用日志的建议会派上用场。例如,要在 C# 中打印出数字,您可以执行以下操作:

double x = Math.Exp(13 - 5) * Math.Log(98);  // the number required is exp(x)
int exponent = (int)Math.Floor(x / Math.Log(10));
double absissae = Math.Exp(x - exponent * Math.Log(10));
System.Diagnostics.Trace.WriteLine(absissae.ToString() + " E " + exponent.ToString());

产生输出

5.77130918514205 E 5935
于 2013-04-12T13:41:50.377 回答