BigDecimal
数字,我怎样才能将其分解以获得整数部分(42)和小数部分(0.7)?
我想将两者作为单独的
BigDecimal
对象进行检索。但我会利用我能得到的东西并从中制作BigDecimal
对象。
myBigDecimal
.divideAndRemainder( BigDecimal.ONE )
[ 0 ] // for integer part
…还有…
[ 1 ] // for fraction part
BigDecimal::divideAndRemainder
BigDecimal
类为此提供了一些方法。
BigDecimal::divideAndRemainder
方法将您的原始数字除以另一个数字。结果是两个 BigDecimal
对象的数组,第一个是整数部分,第二个是小数部分。
为了实现您的目标,我们只需除以一即可。
BigDecimal
类提供值为 1 的常量对象:BigDecimal.ONE
。
BigDecimal input = new BigDecimal( "42.7" ) ;
BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );
转储到控制台。
System.out.println( Arrays.toString( parts ) );
[42.0, 0.7]
从阵列中抓取每一个部分。
BigDecimal input = new BigDecimal( "42.7" ) ;
BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );
BigDecimal integerPart = parts[ 0 ] ;
BigDecimal fractionPart = parts[ 1 ] ;
如果您只需要一部分:
myBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 0 ]
整数部分myBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 1 ]
小数部分BigDecimal humptyDumpty = integerPart.add( fractionPart ) ;
我想我会选择
setScale()
。
BigDecimal bd = new BigDecimal("42.7");
BigDecimal integerPart = bd.setScale(0, RoundingMode.DOWN);
BigDecimal fractionalPart = bd.subtract(integerPart);
System.out.println(integerPart);
System.out.println(fractionalPart);
42 0.7
我觉得读起来很清楚。