DecimalFormat 与double格式化

本文介绍了如何使用Java处理浮点数的精度问题,并通过DecimalFormat进行数字格式化的方法。展示了如何避免浮点运算中的精度丢失,以及如何将计算结果格式化为指定样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Demo来一发,做做记录:

[java]  view plain  copy
  1. //保留两位小数  
  2. private DecimalFormat decimalFormat = new DecimalFormat("0.00");  
[java]  view plain  copy
  1. String str1="0.01";  
  2. String str2="0.09";  
  3. //转化为Double类型数值相加减,精度不会缺失  
  4. double sum = Double.parseDouble(str1) + Double.parseDouble(str2);  
  5. LogUtil.d("sum", sum + "");                //打印结果 sum=0.09999999999999999  
  6. String formatTitle = decimalFormat.format(sum);  
  7. LogUtil.d("formatum", formatTitle);        //打印结果 formatTitle=0.10  

   其中主要用到了DecimalFormat 这个类,它是 NumberFormat 的一个具体子类,用于格式化十进制数字。

         Demo示例:

[java]  view plain  copy
  1. DecimalFormat df1 = new DecimalFormat("0.0");  
  2. DecimalFormat df2 = new DecimalFormat("#.#");  
  3. DecimalFormat df3 = new DecimalFormat("000.000");  
  4. DecimalFormat df4 = new DecimalFormat("###.###");  
  5.   
  6. LogUtil.d("sum",df1.format(12.34));     //打印结果 sum: 12.3  
  7. LogUtil.d("sum",df2.format(12.34));     //打印结果 sum: 12.3  
  8. LogUtil.d("sum",df3.format(12.34));     //打印结果 sum: 012.340  
  9. LogUtil.d("sum",df4.format(12.34));     //打印结果 sum: 12.34  

         以下摘自百度百科:

         DecimalFormat 包含一个模式 和一组符号

    符号含义:
    0  一个数字
    #  一个数字,不包括 0
    .  小数的分隔符的占位符
    ,  分组分隔符的占位符
    ;  分隔格式。
    -  缺省负数前缀。
    % 乘以 100 和作为百分比显示
    ?  乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符。
    X  前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值