非常に大きな数( number1BigInteger
) が、および(number2)として保存されていdouble
ます。number1とnumber2を乗算し、結果を double として格納する予定です。
メソッドを使用しても、multiply()
これを達成するのに役立ちませんでした。進むべき道は何ですか?
非常に大きな数( number1BigInteger
) が、および(number2)として保存されていdouble
ます。number1とnumber2を乗算し、結果を double として格納する予定です。
メソッドを使用しても、multiply()
これを達成するのに役立ちませんでした。進むべき道は何ですか?
任意の精度を可能な限り維持するには、 で乗算を行いBigDecimal
、結果を に変換しdouble
ます。次のようにします。
BigDecimal tmp = new BigDecimal(myBigInteger);
tmp = tmp.multiply(new BigDecimal(myDouble));
double res = tmp.doubleValue();
最も簡単な解決策はおそらくbig.doubleValue() * myDouble
.
BigInteger.doubleValue()
残念ながら、実装が非常に遅いため、これは特に高速ではありません。(将来的にはもっと速くなるかもしれません...おそらくOracleが私のパッチを適用すれば.)
または、 Guava のを使用して a を adouble
に直接丸めることができます。BigInteger
DoubleMath.roundToBigInteger(double, RoundingMode)
.doubleValue()
BigInteger を呼び出し、それらを double として乗算します。
なぜ役に立たBigInteger#multiply()
ないのですか?実際には、合理的な答えは 2 つだけです。
BigInteger a = /* whatever */;
double b = /* whatever */
// either
double result = a.multiply(new BigInteger(b)).doubleValue();
// or
double result = a.doubleValue() * b;