对于像42.7这样的 BigDecimal 数字,我如何分解它以获得整数部分(42)和小数部分(0.7)?
BigDecimal
我想将这两个都作为 BigDecimal 对象检索。但我会获取我能得到的东西,并从它们中创建 BigDecimal 对象。
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
tl;dr
myBigDecimal .divideAndRemainder( BigDecimal.ONE ) [ 0 ] // for integer part
…和…
[ 1 ] // for fraction part
BigDecimal::divideAndRemainder
BigDecimal 类为此提供了一些方法。
BigDecimal::divideAndRemainder 方法将原始数字除以另一个数字。结果是一个包含两个 BigDecimal 对象的数组,第一个是整数部分,第二个是小数部分。
为了实现你的目标,我们只需要除以1。 BigDecimal 类为1: BigDecimal.ONE 的值提供了一个常量对象。
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 ]
Addition 把它们写成了 together again 。
BigDecimal humptyDumpty = integerPart.add( fractionPart ) ;
setScale()
我想我会选择 setScale() 。
BigDecimal bd = new BigDecimal("42.7");