代码改变世界

数字的格式化

2006-04-19 09:41  Jeff  阅读(1085)  评论(0编辑  收藏  举报
Java中数字格式的处理.主要是用到抽象类java.text.NumberFormat和它的子类java.text..DecimalFormat.具体的细节可以查看API文档,总结一下数字格式化的使用方法:    

为了格式化当前语言环境的数字,要使用一个工厂类方法:

myString = NumberFormat.getInstance().format(myNumber);

要格式化不同语言环境的日期,可在 getInstance 的调用中指定它:

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);

DecimalFormat NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。

要获取具体语言环境的 NumberFormat(包括默认语言环境),可调用 NumberFormat 的某个工厂方法,如 getInstance()。通常不直接调用 DecimalFormat 的构造方法,因为 NumberFormat 的工厂方法可能返回不同于 DecimalFormat 的子类。如果需要自定义格式对象,可执行:

 NumberFormat f = NumberFormat.getInstance(loc);
 
if (f instanceof DecimalFormat) {
     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(
true);
 }


要使用DecimalFormat对象,必须提供给它提供一个格式化的模式(pattern)
String pattern = …
DecimalFormat df = new DecimalFormat(pattern);
或者:
DecimalFormat df = new DecimalFormat();
df. applyPattern(pattern);
然后就调用它的format方法就行了。下面是一些模式运用的例子:
// The 0 symbol shows a digit or 0 if no digit present
    NumberFormat formatter = new DecimalFormat("000000");
    String s 
= formatter.format(-1234.567);  // -001235
    
// notice that the number was rounded up
  
    
// The # symbol shows a digit or nothing if no digit present
    formatter = new DecimalFormat("##");
    s 
= formatter.format(-1234.567);         // -1235
    s = formatter.format(0);                 // 0
    formatter = new DecimalFormat("##00");
    s 
= formatter.format(0);                 // 00
    
    
// The . symbol indicates the decimal point
    formatter = new DecimalFormat(".00");
    s 
= formatter.format(-.567);             // -.57
    formatter = new DecimalFormat("0.00");
    s 
= formatter.format(-.567);             // -0.57
    formatter = new DecimalFormat("#.#");
    s 
= formatter.format(-1234.567);         // -1234.6
    formatter = new DecimalFormat("#.######");
    s 
= formatter.format(-1234.567);         // -1234.567
    formatter = new DecimalFormat(".######");
    s 
= formatter.format(-1234.567);         // -1234.567
    formatter = new DecimalFormat("#.000000");
    s 
= formatter.format(-1234.567);         // -1234.567000
    
    
    
// The , symbol is used to group numbers
    formatter = new DecimalFormat("#,###,###");
    s 
= formatter.format(-1234.567);         // -1,235
    s = formatter.format(-1234567.890);      // -1,234,568
    
    
// The ; symbol is used to specify an alternate pattern for negative values
    formatter = new DecimalFormat("#;(#)");
    s 
= formatter.format(-1234.567);         // (1235)
    
    
// The ' symbol is used to quote literal symbols
    formatter = new DecimalFormat("'#'#");
    s 
= formatter.format(-1234.567);         // -#1235
    formatter = new DecimalFormat("'abc'#");
    s 
= formatter.format(-1234.567);         // -abc1235