如何在java中将double加到bigInteger中

时间:2017-11-18 18:36:56

标签: java biginteger

我需要计算$a^b$ a BigInteger b double#include "cpu.hpp" CPU::CPU(Cartridge cart): cart(cart) { PC = getMem(0xFFFC) + (getMem(0xFFFD) << 8); } unsigned char CPU::getMem(unsigned short addr) {return cart.getMem(addr);} //... 是否可以在java中进行计算?

1 个答案:

答案 0 :(得分:2)

看起来标准的Java库没有提供任何以任意精度计算能力的方法。

如果您不需要任意精度且双精度就足够了,可以使用Math.pow(double, double)

如果你的指数实际上是一个整数,你可以尝试BigInteger.pow(int)

BigInteger result = new BigInteger("312413431431431431434314134").pow(5);

如果你真的需要任意精确的电源操作,你将不得不看一些库。例如,有Apfloat:https://github.com/mtommila/apfloat

你可以这样做:

BigDecimal base = new BigDecimal("12341341341341341341341343414134134");
double exponent = 1.5;
Apfloat apfloatBase = new Apfloat(base);
Apfloat apfloatExponent = new Apfloat(exponent);
Apfloat result = ApfloatMath.pow(apfloatBase, apfloatExponent);

Javadocs:http://www.apfloat.org/apfloat_java/docs/org/apfloat/Apfloat.html http://www.apfloat.org/apfloat_java/docs/org/apfloat/ApfloatMath.html