Correct me if I'm wrong, but couldn't the same bug exist in the BigDecimal to double conversion? It has to turn a precise value into an approximate double using a similar algorithm, no?
return base.scaleByPowerOfTen(exponent).doubleValue();