CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何将数字变为字符串格式化输出?

楼主zlq(zlq)2001-12-06 11:39:36 在 Java / J2SE / 基础类 提问

如:  
  2     ->   "002"  
  99   ->   "099"  
   
  12.3       ->   "12.30"  
  12.345   ->   "12.34" 问题点数:20、回复次数:1Top

1 楼ycats(加菲猫)回复于 2001-12-06 11:49:02 得分 20

public   class   DecimalFormat    
  extends   NumberFormat    
  DecimalFormat   是   NumberFormat   的格式化十进制数值的具体子类。   该类允许有不同的参数,并本地化为   Western、Arabic   或   Indic   数字。    
   
  通常,使用一个   NumberFormat   工厂方法,如   getInstance   可以获得特定语言环境   (   包括缺省的语言环境   )的正确的   NumberFormat。然后可以修改它   (   当然测试以确保它是一个   DecimalFormat   之后进行   !)。    
   
  为了使分析能够区分正负数,前缀或后缀必须有所不同。   如果数字、千进制或小数分隔符相同,或者前缀或后缀中发生了上述情况,分析将是不可靠的。    
   
  特殊情况:    
   
  NaN   作为一个数字格式化,典型的例子是   \\uFFFD。    
   
  正/负无穷大作为一个数字格式化,典型的例子是   \\u221E,   加正负前缀   /   后缀。    
   
  注意:   该类是为普通的用户设计;对于很大或很小的数,请使用可以表示指数值的格式。    
   
  示例:    
   
    //   normally   we   would   have   a   GUI   with   a   menu   for   this  
    Locale[]   locales   =   NumberFormat.getAvailableLocales();  
    double   myNumber   =   -1234.56;  
    NumberFormat   form;  
    //   just   for   fun,   we   print   out   a   number   with   the   locale   number,   currency  
    //   and   percent   format   for   each   locale   we   can.  
    for   (int   j   =   0;   j   <3;   ++j)   {   system.out.println("format");   for   (int   i="0;"   i   <   locales.length;   ++i)   {   if   (locales[i].getcountry().length()="="   0)   {   //   skip   language-only   continue;   }   system.out.print(locales[i].getdisplayname());   switch   (j)   {   default:   form="NumberFormat.getInstance(locales[i]);"   break;   case   1:   form="NumberFormat.getCurrencyInstance(locales[i]);"   break;   case   0:   form="NumberFormat.getPercentInstance(locales[i]);"   break;   }   try   {   system.out.print(":   "   +   ((decimalformat)form).topattern()   +   "   ->   "   +   form.format(myNumber));  
                    }   catch   (IllegalArgumentException   iae)   {   }  
                    try   {  
                            System.out.println("   ->   "   +   form.parse(form.format(myNumber)));  
                    }   catch   (ParseException   pe)   {   }  
            }  
    }  
     
  以下显示了模式的结构。    
    pattern         :=   subpattern{;subpattern}  
    subpattern   :=   {prefix}integer{.fraction}{suffix}  
    prefix           :=   '\\u0000'..'\\uFFFD'   -   specialCharacters  
    suffix           :=   '\\u0000'..'\\uFFFD'   -   specialCharacters  
    integer         :=   '#'*   '0'*   '0'  
    fraction       :=   '0'*   '#'*  
    符号:  
      X*               0   个或多个   X   实例。  
      (X   |   Y)     X   或   Y。  
      X..Y           X   到   Y   之间的任何字符。  
      S   -   T         在   S   中且不在   T   中的字符。  
     
  第一种子模式为了表示正数。第二种   (   可选的   )   子模式为了表示负数。   (   在两种情况下,','   可以出现在整数部分中   --   它过于不规整不能在   BNF   中指示。)    
  下面是用在部分子模式中的特殊字符以及它们的使用说明。    
   
    符号含义  
    0             一个数字  
    #             一个数字,不包括   0  
    .             小数的分隔符的占位符  
    ,             分组分隔符的占位符  
    ;             分隔格式。  
    -             缺省负数前缀。  
    %             乘以   100   和作为百分比显示  
    ?             乘以   1000   和作为千进制货币符显示;用货币符号代替;如果双写,用  
  国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代  
  替十进制分隔符。  
    X             前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。    
  注意    
   
  如果没有明确的负数子模式   -   将在正数形式上加前缀。   即,单独的   "0.00"   与   "0.00;-0.00"   等价。    
   
  非法的模式,如   "#.#.#"   或在同一模式中将   '_'   和   '*'   混在一起,将引起抛出   IllegalArgumentException   异常。   在消息   IllegalArgumentException   中可以找到字符串中错误发生的地方。    
   
  分组分隔符通常用来分隔千位,但在某些国家中用来分隔万位。   在分组字符之间的位数数字是固定的,如   100,000,000   或   1,0000,0000。   如果提供了具有多分组字符的模式,整数中上一个和最后一个数字之间是使用的同一个数字。所以   "#,##,###,####"   ==   "######,####"   ==   "##,####,####"。    
   
  当调用   DecimalFormat.parse(String,   ParsePosition)   且分析失败时,将返回   null   对象。分析位置没有改变也表示分析期间出现了错误。当调用便捷的方法   DecimalFormat.parse(String)   且分析失败时,将抛出   ParseException   异常。    
   
  该类只处理本地化的数字,从   0   到   9   的   10   个数字在   Unicode   中是连续的。其它的数字集合   (   如上标   )   需要不同的子类。  
   
   
  参见:    
  Format,   NumberFormat,   ChoiceFormat    
   
  --------------------------------------------------------------------------------  
  Top

相关问题

  • SQL Server SQL语句中字符串怎么格式化输出?
  • 关于字符串格式化输出的问题
  • 如何在DataGrid中格式化输出字符串
  • 紧急求解:(DataList内)字符串的格式化输出
  • stringgrid.cell[i,j]字符串格式化输出到文本文件???
  • 使用sscanf格式化输出一段字符串求助
  • 如何格式化字符串输出¥120,000.00或者120,000.00
  • 格式化字符串
  • 格式化字符串
  • 字符串的格式化

关键词

  • 格式化
  • 数字
  • 字符
  • 模式
  • 前缀
  • subpattern
  • numberformat
  • 分隔符
  • ufffd
  • 负数

得分解答快速导航

  • 帖主:zlq
  • ycats

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo