web-dev-qa-db-ja.com

とにかくDoubleからBigIntegerに変換する方法はありますか?

とにかくdouble値からBigIntegerに変換する方法はありますか?

double doubleValue = 64654679846513164.2;
BigInteger bigInteger = (BigInteger) doubleValue;

キャストしようとしましたがうまくいきませんでした。

16
Krack

BigIntegerは、小数ではなく、任意精度の整数を保持するために作成されています。 BigDecimalクラスを使用して、doubleを保持できます。

BigDecimal k = BigDecimal.valueOf(doublevalue);

一般に、キャストJavaプリミティブを別のクラスに入力することはできません。私が知っている例外は、NumberなどのLongを拡張するクラスです。 Integerラッパークラス。これにより、int値をIntegerにキャストできます。

18
Kon

DoubleをBigDecimalに変換し、thenBigIntegerに変換できます。

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