is there anyway to convert from Double to BigInteger?

If you want to store the integral part of the double into a BigInteger, then you can convert it into a BigDecimal and then into a BigInteger:

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

BigInteger is made for holding arbitrary precision integer numbers, not decimals. You can use the BigDecimal class to hold a double.

BigDecimal k = BigDecimal.valueOf(doublevalue);

In general, you cannot type cast a Java primitive into another class. The exceptions that I know about are the classes extending Number, such as the Long and Integer wrapper classes, which allow you to cast an int value into an Integer, and so on.


The process of converting a Double -> BigDecimal -> BigInteger is intensive. I propose the below: (about 500% faster)

BigInteger m = DoubleToBigInteger(doublevalue);

static BigInteger DoubleToBigInteger(double testVal) {
    long bits = Double.doubleToLongBits(testVal); 
    int exp = ((int)(bits >> 52) & 0x7ff) - 1075;
    BigInteger m = BigInteger.valueOf((bits & ((1L << 52)) - 1) | (1L << 52)).shiftLeft(exp);
    return  (bits >= 0)? m : m.negate();
}