java中的float double精度丢失的解决方案

System. out .println(0.15d - 0.05d);  // 0.09999999999999999 
System. out .println(2.08f - 3.7f);  // -1.6200001  
System. out .println(13.2d * 7); //92.39999999999999

解决方案:
方案一:
BigDecimal b1 =  new  BigDecimal(String.valueOf(13.2d));
BigDecimal b2 =  new  BigDecimal(String.valueOf(7));
//add加,subtract减,multiply乘,divide除
  double  value = b1.multiply(b2).doubleValue();
System.  out .println(value); //92.4

方案二:
private  static  final  DecimalFormat  AA  =  new  DecimalFormat( "##.00" );
private  static  final  DecimalFormat  BB  =  new  DecimalFormat( "##.##" );
String value1 =  AA .format(13.2d * 7);
String value2 =  BB .format(13.2d * 7);
System.  out .println(value1); //92.40
System.  out .println(value2); //92.4

方案三:
NumberFormat numberFormat = NumberFormat.getInstance();
String value = numberFormat.format(13.2d * 7);
System.  out .println(value); //92.4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值