• java中对浮点数精度的处理DecimalFormat


    DecimalFormat是一个队浮点数进行格式化输出的利器,比如我们要输出一个保留一位小数的浮点数,可以键入如下代码:

    DecimalFormat df = new DecimalFormat("0.0") //一个包括0的保留一位小数的浮点数字
    
    float num = 0.123;
    
    df.format(num);

    上面的3行代码即可对num进行格式设置

    结果会输出0.1   注:改方法会对数字进行4舍5入

    下面给出通该类中的通配符:

    0 一个数字

    # 一个数字,不包括 0

    . 小数的分隔符的占位符

    , 分组分隔符的占位符

    ; 分隔格式。

    - 缺省负数前缀。

    % 乘以 100 和作为百分比显示

    ? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用

    国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代

    替十进制分隔符。

    X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

    上面便是具体的通配符,看不明白?好,下面是API中的一个例子

    格式:"0.###E0"      输入: 1234    输出: "1.234E3"

    至于其他复杂的情形,可以直接去参考API,这里不一一列举

    更一般的处理数字的方法是NumberFormat,即DecimalFormat的父接口,通过调用NumberFormat的工厂方法来解析数字,比如带有科学计数法的数字解析,实例如下

    float content = 123.4f;  
    DecimalFormat df = new DecimalFormat("#.#E0")
    NumberFormat nf = NumberFormat.getNumberInstance();
         try {
          Number number = nf.parse(df.format(cotent));
          content = number.toString();
          BigDecimal bd = new BigDecimal(content);
          content = bd.toPlainString();//JDK1.5才有 1.4用content = bd.toString();
    
         } catch (ParseException e) {
       
         }
    

      解析前的输出 1.2E2 解析后的为120。更加具体的操作可以参考 http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4

     

  • 相关阅读:
    【论文阅读-Embedding】《GloVe: Global Vectors for Word Representation》
    机器学习的问题总结
    预算平滑
    ML基础番外篇-距离度量
    vim配置使用
    强化学习 Note
    强化学习(David Silver)9:探索与利用
    强化学习(David Silver)8:集成学习和计划
    强化学习(David Silver)7:策略梯度算法
    数学基础01-最优化(梯度下降法、牛顿法、拟牛顿法等)
  • 原文地址:https://www.cnblogs.com/ooon/p/4428232.html
Copyright © 2020-2023  润新知