无论如何要从double
value 转换为BigInteger
?
double doubleValue = 64654679846513164.2;
BigInteger bigInteger = (BigInteger) doubleValue;
我尝试投射它,但它没有用。
无论如何要从double
value 转换为BigInteger
?
double doubleValue = 64654679846513164.2;
BigInteger bigInteger = (BigInteger) doubleValue;
我尝试投射它,但它没有用。
如果要将 double 的整数部分存储到 aBigInteger
中,则可以将其转换为 a BigDecimal
,然后再转换为 a BigInteger
:
BigInteger k = BigDecimal.valueOf(doubleValue).toBigInteger();
BigInteger 用于保存任意精度的整数,而不是小数。您可以使用BigDecimal
该类来举行双打。
BigDecimal k = BigDecimal.valueOf(doublevalue);
通常,您不能将 Java 原语类型强制转换为另一个类。我知道的例外是扩展类Number
,例如Long
和Integer
包装类,它们允许您将 int 值转换为 Integer,等等。
转换 a Double
-> BigDecimal
->的过程BigInteger
是密集的。我提出以下建议:(大约快 500%)
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();
}