为了账号安全,请及时绑定邮箱和手机立即绑定

难道格式化的时候他自己会把后面的0自动去掉么?

难道格式化的时候他自己会把后面的0自动去掉么?

三国纷争 2022-10-26 21:10:33
需求其实很简单,就是保留两位小数,四舍五入  BigDecimal bd = new BigDecimal(tax);//tax为double类型        double formatted =  bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();一般运行时没问题,但是对一些特殊数据处理时就出错了,比如tax = 1.499,按道理说应该输出1.50的,但是输出的是1.5另外还有tax =0,输出的是0.0,却不是我希望的0.00
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

我想你需要把后面的0留下的话,应该不是为了计算,而是为了显示。所以我认为,你没必要用BigDecimal。你应该用NumberFormat,得到的结果是一个字符串,这样才能保留后面的0.

final NumberFormat format = NumberFormat.getNumberInstance();
format.setRoundingMode(RoundingMode.HALF_UP);
format.setMaximumFractionDigits(2);
format.setMinimumFractionDigits(2);
System.out.println(format.format(tax));

查看完整回答
反对 回复 2022-11-01
?
浮云间

TA贡献1829条经验 获得超4个赞

用下DecimalFormat类
DecimalFormat  df = new DecimalFormat("0.00");

df.format(Object);
或看下此类的一些用法,解决你的这个需求很方便的!

查看完整回答
反对 回复 2022-11-01
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

BigDecimal bd = new BigDecimal(tax);// tax为double类型
BigDecimal formatted = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(formatted);
就能得到你想要的结果

你要的是doubleValue(); 就会把后面的0给截取了

查看完整回答
反对 回复 2022-11-01
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信