知识大全 格式化输出数字

Posted 数字

篇首语:提兵百万西湖上,立马吴山第一峰!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 格式化输出数字相关的知识,希望对你有一定的参考价值。

  格式化输出数字  有时我们需要控制输出的数字的格式 如何使用java的类库做到这个呢?    也许你不关心格式 但是你需要关心你的程序可以在全世界通用 像下面的这样一个简单的语句是依赖地区的      System out println( );    在美国 是小数点 但在其它地方就不一定了 如何处理这个呢?    java text 包中的一些包可以处理这类问题 下面的简单范例使用那些类解决上面提出的问题      import java text Numberformat;     import java util Locale;     public class Decimalformat      public static void main(String args[])      // 得到本地的缺省格式     Numberformat nf = Numberformat getInstance();     System out println(nf format( ));     // 得到德国的格式     Numberformat nf =     Numberformat getInstance(Locale GERMAN);     System out println(nf format( ));              如果你在美国 运行程序后输出               换句话说 在不同的地方使用不同的习惯表示数字     Numberformat getInstance()方法返回Numberformat的一个实例(实际上是Numberformat具体的一个子类 例如Decimalformat) 这适合根据本地设置格式化一个数字 你也可以使用非缺省的地区设置 例如德国 然后格式化方法根据特定的地区规则格式化数字 这个程序也可以使用一个简单的形式      Numberformat getInstance() format( )    但是保存一个格式然后重用更加有效 国际化是格式化数字时的一个大问题     另一个是对格式的有效控制 例如指定小数部分的位数 下面是解决这个问题的一个简单例子      import java text Decimalformat;     import java util Locale;     public class Decimalformat      public static void main(String args[])      // 得到本地的缺省格式     Decimalformat df = new Decimalformat( #### );     System out println(df format( ));     // 得到德国的格式     Locale setDefault(Locale GERMAN);     Decimalformat df = new Decimalformat( #### );     System out println(df format( ));              在这个例子中设置了数字的格式 使用像 #### 的符号 这个模式意味着在小数点前有四个数字 如果不够就空着 小数点后有三位数字 不足用 补齐 程序的输出               相似的 也可以控制指数形式的格式 例如      import java text Decimalformat;     public class Decimalformat      public static void main(String args[])      Decimalformat df = new Decimalformat( E );     System out println(df format( ));              输出      E     对于百分数      import java text Numberformat;     public class Decimalformat      public static void main(String args[])      Numberformat nf = Numberformat getPercentInstance();     System out println(nf format( ));              输出      %    至此 你已经看到了格式化数字的几个不同的技术 另一方面 如何读取并解析包含格式化的数字的字符串?解析支持包含在Numberformat中 例如      import java util Locale;     import java text Numberformat;     import java text ParseException;     public class Decimalformat      public static void main(String args[])      // 本地格式     Numberformat nf = Numberformat getInstance();     Object obj = null;     // 基于格式的解析     try      obj = nf parse( );          catch (ParseException e )      System err println(e );          System out println(obj );     // 德国格式     Numberformat nf =     Numberformat getInstance(Locale GERMAN);     Object obj = null;     // 基于格式的解析     try      obj = nf parse( );          catch (ParseException e )      System err println(e );          System out println(obj );              这个例子分两部分 都是解析一个字符串 第一部分使用本地格式解析 第二部分使用德国格式解析 当程序在美国运行 结果是               换句话说 在美国被认为是一个巨大的整数 而在德国被认为是一个小数     还有格式化讨论的最后一个问题 在上面的例子中 Decimalformat 和 Numberformat 都被使用了 Decimalformat 常用于获得很好的格式控制 而Numberformat 常用于指定不同于本地的地区 如何结合两个类呢?    答案围绕着这样的事实 Decimalformat是Numberformat的一个子类 其实例被指定为特定的地区 因此 你可以使用Numberformat getInstance 指定一个地区 然后将结构强制转换为一个Decimalformat对象 文档中提到这个技术可以在大多情况下适用 但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区) 下面是一个这样的例子      import java text Decimalformat;     import java text Numberformat;     import java util Locale;     public class Decimalformat      public static void main(String args[])      Decimalformat df = null;     // 得到一个Numberformat 对象并     // 强制转换为一个 Decimalformat 对象     try      df = (Decimalformat)     Numberformat getInstance(Locale GERMAN);          catch (ClassCastException e)      System err println(e);          // 设置格式模式     df applyPattern( #### );     // format a number     System out println(df format( ));                getInstance() 方法获得格式 然后调用applyPattern()方法设置格式模式 输出          如果你不关心国际化 可以直接使用Decimalformat    cha138/Article/program/Java/JSP/201311/19635

相关参考