加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 01:01:27 所属栏目:Java 来源:网络整理
导读:我想从 java中的bigdecimal中提取整数部分和小数部分. 我正在使用以下代码. BigDecimal bd = BigDecimal.valueOf(-1.30) String textBD = bd.toPlainString(); System.out.println("length = "+textBD.length()); int radixLoc = textBD.indexOf('.'); Syste
我想从 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读