我正在尝试执行Math.pow()操作来查找10到长数的幂 . 结果预计会非常大,因此,我将其存储在BigInteger中 . 我试过以下:
tempBigInt = java.math.BigDecimal.valueOf(Math.pow(10, i)).toBigInteger();
我通过一个循环来运行它,其中'i'一直在增加,直到满足某个条件 . 此代码工作正常,除非它计算Math.pow(10,23) . 奇怪的是,这是唯一出错的 Value ,从而使我的最终结果不正确 .
我也尝试通过我的IDE验证这一点,看起来Java不喜欢Math.pow(10,23) . 可能是一个错误 . 如果有人知道是什么导致了这种异常行为,你能否解释一下,并且可能提供一种更好,无错误的方法来实现这一行代码? [tempBigInt是一个BigInteger,我很长]
1 回答
Math.pow
返回double
.double
的大小只有64位 . 它可以代表大数字,但不准确 . 将其转换为BigDecimal然后转换为BigInteger并不会使其更准确 .使用
BigInteger
本身上的pow
方法执行您想要的操作: