【发布时间】:2011-04-04 12:48:01
【问题描述】:
在我的小项目中,我只需要对非常大的数字做类似Math.pow(7777.66, 5555.44) 的操作。我遇到了一些解决方案:
- 使用
double- 但数字太大 - 使用
BigDecimal.pow,但不支持小数 - 使用
X^(A+B)=X^A*X^B公式(B是第二个数字的余数),但同样不支持大X或大A,因为我仍然转换为双精度 - 使用某种泰勒级数算法或类似的东西 - 我的数学不太好,所以如果我找不到任何解决方案,这是我最后的选择(
(A+B)^(C+D)的一些库或公式)。
有人知道图书馆或简单的解决方案吗?我想很多人都在处理同样的问题......
附言
我发现了一个名为 ApFloat 的库,声称可以近似地做到这一点,但我得到的结果是如此近似,以至于即使 8^2 给了我 60...
【问题讨论】:
-
您能否举个例子说明您尝试完成的工作,8^2 != 64 听起来很糟糕,需要缩小 2^100^100。
-
我必须说我尝试了公式技巧,到目前为止,即使是数百万位数的数字,它也能正常工作! (看起来我对double和int一无所知)......示例:50!^ 10! = 12.50911317862076252364259*10^233996181 50!^0.06 = 7395.788659356498101260513 在这里发布的代码有点长,但你明白了 X^(A+B)=X^A*X^B... 现在我是试图了解它如何以及为什么(以及是否)真正适用于如此庞大的数字。
-
我已经给出了解决方案stackoverflow.com/questions/11848887/…
标签: java formula bigdecimal pow