我想从java中的bigdecimal提取整数部分和小数部分。

我正在使用以下代码。

    BigDecimal bd = BigDecimal.valueOf(-1.30)
    String textBD = bd.toPlainString();
    System.out.println("length = "+textBD.length());
    int radixLoc = textBD.indexOf('.');
    System.out.println("Fraction "+textBD.substring(0,radixLoc)+"Cents: " + textBD.substring(radixLoc + 1, textBD.length()));

我得到的输出为

-1和3

但我也想从-1.30开始尾随零

输出应为 -1和30

最佳答案

-1.30的浮点表示形式不正确。这是您的代码的略微修改:

BigDecimal bd = new BigDecimal("-1.30").setScale(2, RoundingMode.HALF_UP);
String textBD = bd.toPlainString();
System.out.println("text version, length = <" + textBD + ">, " + textBD.length());
int radixLoc = textBD.indexOf('.');
System.out.println("Fraction " + textBD.substring(0, radixLoc)
    + ". Cents: " + textBD.substring(radixLoc + 1, textBD.length()));

我在setScale上放置了RoundingMode以将小数便士(例如1.295)“减半”到1.30。

结果是:
text version, length = <-1.30>, 5
Fraction -1. Cents: 30

关于java - 在Java中从Bigdecimal提取整数和小数部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21629894/

10-08 22:30