BigDecimal.unscaledValue()
:
BigDecimal bd = BigDecimal.valueOf(54, 45);
System.out.println(bd.unscaledValue()); //prints "54"
Результатом этого метода является BigInteger
, поскольку BigDecimal
имеет десятичную точность произвольной длины.
Редактировать
Вот самый чистый способ найти другой способ (5.4):
bd.scaleByPowerOfTen(bd.scale() + 1 - bd.precision());
Это я проверял меньше, но это должно охватывать все случаи. Он масштабирует число таким образом, чтобы не было десятичной дроби (bd.scale()
), но затем масштабируется так, чтобы от десятичной точки оставалось только одно число (1 - bd.precision()
).