41

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

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

4

3 回答 3

38

这里有一个核心数学函数的 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());
    }
}

打印出来:

1.1

更新

许可证信息现在在 2015 年 5 月的更新中很清楚:

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

于 2013-05-16T16:40:21.000 回答
7

没用过,但是看到了酸舒。github中的一个开源版本(https://github.com/nmdev2020/SuanShu)。

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

public static java.math.BigDecimal pow(java.math.BigDecimal a,
                                       java.math.BigDecimal b)
Compute a to the power of b.
于 2013-05-08T13:21:00.073 回答
5

Apfloat 库似乎正在这样做,请查看API 文档

ApcomplexMath.pow(Apcomplex z, Apcomplex w)

Apcomplex 是一个包装类,例如 BigDecimal。

于 2013-05-13T08:23:13.127 回答