首页 文章

执行具有长指数值的Math.pow()操作的最佳方法是什么?

提问于
浏览
1

我正在尝试执行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 回答

  • 6

    Math.pow 返回 double . double 的大小只有64位 . 它可以代表大数字,但不准确 . 将其转换为BigDecimal然后转换为BigInteger并不会使其更准确 .

    使用 BigInteger 本身上的 pow 方法执行您想要的操作:

    BigInteger goodOne = BigInteger.TEN.pow(23);
    

相关问题