是否有可能通过Double in Java多个BigInteger?

jII*_*jII 4 java biginteger

我有一个非常大的数字(number1)存储为a BigInteger和a double(number2).我计划将number1number2相乘,并将结果存储为double.

使用该multiply()方法并没有帮助我实现这一目标.前进的方向是什么?

das*_*ght 16

为了尽可能长时间地保留任意精度,请进行乘法BigDecimal,然后将结果转换为double,如下所示:

BigDecimal tmp = new BigDecimal(myBigInteger);
tmp = tmp.multiply(new BigDecimal(myDouble));
double res = tmp.doubleValue();
Run Code Online (Sandbox Code Playgroud)


Lou*_*man 8

最简单的解决方案可能就是big.doubleValue() * myDouble.

不幸的是,这不会特别快,因为BigInteger.doubleValue()实施起来非常缓慢.(未来可能会更快......也许如果Oracle应用我的补丁.)

或者,您可以使用Guavadouble直接将其舍入到a .BigInteger DoubleMath.roundToBigInteger(double, RoundingMode)