To maintain arbitrary precision for as long as possible, do the multiplication in BigDecimal , and then convert the result to double , for example:
BigDecimal tmp = new BigDecimal(myBigInteger); tmp = tmp.multiply(new BigDecimal(myDouble)); double res = tmp.doubleValue();
source share