zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    Network (poj1144)
    C. Hongcow Builds A Nation
    ZYB loves Xor I(hud5269)
    D. Chloe and pleasant prizes
    Game(hdu5218)
    约瑟夫环的递推方法
    Misaki's Kiss again(hdu5175)
    Exploration(hdu5222)
    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
    C. Arpa's loud Owf and Mehrdad's evil plan
  • 原文地址:https://www.cnblogs.com/ooon/p/4428232.html
Copyright © 2011-2022 走看看