在Java中从Bigdecimal中提取整数和小数部分

前端之家收集整理的这篇文章主要介绍了在Java中从Bigdecimal中提取整数和小数部分前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从 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相关文章