代码之家  ›  专栏  ›  技术社区  ›  Basil Bourque

如何在Java中获得BigDecimal的整数和小数部分

  •  0
  • Basil Bourque  · 技术社区  · 5 年前

    BigDecimal 像42.7这样的数字,我怎么把它拆开,得到整数部分(42)和小数部分(0.7)?

    我想取回这两个 物体。但我会尽我所能去做 反对他们。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Anonymous    5 年前

    设置刻度()

    我想我赞成 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
    

    在我看来,读起来很清楚。

        2
  •  2
  •   Basil Bourque    5 年前

    太长,读不下去了

    myBigDecimal
    .divideAndRemainder( BigDecimal.ONE )
    [ 0 ]                                    // for integer part
    

    [ 1 ]                                    // for fraction part
    

    BigDecimal::divideAndRemainder

    这个 BigDecimal 类为此提供了一些方法。

    BigDecimal::divideAndRemainder 方法将原始数字除以另一个数字。结果是两个数组 大十进制

    大十进制 BigDecimal.ONE .

    BigDecimal input = new BigDecimal( "42.7" ) ;
    BigDecimal[] parts = input.divideAndRemainder( BigDecimal.ONE );
    

    转储到控制台。

    System.out.println( Arrays.toString( parts ) );
    

    从阵列中取出每一块。

    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 ) ;