将double转换为BigInteger

时间:2018-02-14 10:42:50

标签: java floating-point biginteger bigint

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可以使用BigDecimal.valueOf(double),然后在其上调用toBigIntegerExact()。像,

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