A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天看到了处理大数据的bigDecimal类,试了一下,结果出现了小问题:
BigDecimal s1=new BigDecimal(1.9);
BigDecimal s2=new BigDecimal(0.3);
System.out.println("s="+ s1.add(s2));
输出结果为s=2.199999999999999900079927783735911361873149871826171875
查看API找到如下方法:
System.out.println("s="+ s1.add(s2,new MathContext(2)));
但是MathContext(2)只是确定保留的为2位有效数字,如果
BigDecimal s1=new BigDecimal(221.9);
BigDecimal s2=new BigDecimal(0.3);
System.out.println("s="+ s1.add(s2,new MathContext(2)));
输出结果为s=2.2E+2。很郁闷,求大神解决保留小数问题

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

正序浏览
lz可以这样干:
四舍五入保留两位小数
   System.out.println("四舍五入取整:s="
     + s.setScale(2, BigDecimal.ROUND_HALF_UP));

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马