将双精度转换为 BigInteger

Convert double to BigInteger

如何尽可能准确地将 double 转换为 BigInteger? BigInteger 没有 valueOf(double) 方法。它确实有一个 valueOf(long) 方法,但是通过 long 转换会破坏 2^64 范围之外的任何值,特别是我试图让像 1e100 这样的大数字转换为它们对应的整数值到十六或浮点精度允许的有效数字。

你可以在上面使用 BigDecimal.valueOf(double) and then call toBigIntegerExact()。喜欢,

BigInteger bi = BigDecimal.valueOf(Math.PI).toBigIntegerExact();

您可以将 double 转换为 BigDecimal,然后再转换为 BigInteger:

BigInteger k = BigDecimal.valueOf(doublevalue).toBigInteger();