Java的BigDecimal.power(BigDecimal指数):是否有Java库可以做到这一点?

Geo*_*met 37 java

Java的BigDecimal.pow(int)方法只接受整数参数,没有BigDecimal参数.

是否有像Apache的commons-lang这样的库支持BigDecimal.pow(BigDecimal)?它应该能够计算"1.21".pow("0.5")返回"1.1".

hig*_*aro 32

有一个Math.BigDecimal实现的核心数学函数与来自康奈尔大学图书馆可用的源代码在这里(你也可以下载库作为tar.gz的).以下是库使用的示例:

import org.nevec.rjm.*;
import java.math.BigDecimal;

public class test {
    public static void main(String... args) {
        BigDecimal a = new BigDecimal("1.21");
        BigDecimal b = new BigDecimal("0.5");

        System.out.println(BigDecimalMath.pow(a, b).toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

打印出来:

1.1
Run Code Online (Sandbox Code Playgroud)

更新

2015年5月更新中的许可证信息现已明确:

完整的源代码在LGPL v3.0下提供.

  • @the_prole下载[tar.gz](http://arxiv.org/src/0908.3030v2)文件,解压缩内容,然后找到`anc`文件夹,`cd`,然后执行`make BigDecimalMath.jar `,这应该构建可以用作外部库的`BigDecimalMath.jar`文件 (2认同)
  • @higuaro知道为什么我得到这个结果吗?BigDecimalMath.pow(3,3)= 1E + 1 (2认同)

raj*_*esh 7

没用过,但看到了suanshu

BigDecimalUtils有一个适合您需求的pow()

public static java.math.BigDecimal pow(java.math.BigDecimal a,
                                       java.math.BigDecimal b)
Compute a to the power of b.
Run Code Online (Sandbox Code Playgroud)


tst*_*rms 5

Apfloat库似乎正在执行此操作,请检查API文档

ApcomplexMath.pow(Apcomplex z, Apcomplex w)
Run Code Online (Sandbox Code Playgroud)

Apcomplex是例如BigDecimal的包装器类。