tl;dr
myBigDecimal
.divideAndRemainder( BigDecimal.ONE )
[ 0 ] // for integer part
…and…
[ 1 ] // for fraction part
BigDecimal::divideAndRemainder
The BigDecimal
class offers some methods for this.
The BigDecimal::divideAndRemainder
method divides your original number by another number. The result is an array of two BigDecimal
objects, the first being the integer portion and the second being the fraction amount.
To achieve your goal, we merely need to divide by one. The BigDecimal
class offers a constant object for the value of one: BigDecimal.ONE
.
BigDecimal input = new BigDecimal( "42.7" ) ;
BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );
Dump to console.
System.out.println( Arrays.toString( parts ) );
[42.0, 0.7]
Grab each piece from the array.
BigDecimal input = new BigDecimal( "42.7" ) ;
BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );
BigDecimal integerPart = parts[ 0 ] ;
BigDecimal fractionPart = parts[ 1 ] ;
If you only need one part:
myBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 0 ]
integer part
myBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 1 ]
fraction part
Addition puts them together again.
BigDecimal humptyDumpty = integerPart.add( fractionPart ) ;