对于像42.7这样的BigDecimal数字,我如何分解它以获得整数部分(42)和小数部分(0.7)?
我想将这两个都作为BigDecimal对象检索。但我会获取我能得到的东西,并从它们中创建BigDecimal对象。
发布于 2020-07-25 14:12:33
tl;dr
myBigDecimal
.divideAndRemainder( BigDecimal.ONE )
[ 0 ] // for integer part…和…
[ 1 ] // for fraction partBigDecimal::divideAndRemainder
BigDecimal类为此提供了一些方法。
BigDecimal::divideAndRemainder方法将原始数字除以另一个数字。结果是一个包含两个BigDecimal对象的数组,第一个是整数部分,第二个是小数部分。
为了实现你的目标,我们只需要除以1。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 ]整数partmyBigDecimal.divideAndRemainder( BigDecimal.ONE )[ 1 ]小数部分Addition把它们写成了together again。
BigDecimal humptyDumpty = integerPart.add( fractionPart ) ;发布于 2020-07-25 15:07:20
setScale()
我想我会选择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
对我来说,阅读起来似乎很清楚。
https://stackoverflow.com/questions/63085009
复制相似问题