我需要计算$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中进行计算?
答案 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