快速业务通道

Merlin的魔力: 格式化数值和货币 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
如何显示正数、负数、小数和指数。如果不喜欢用于不同地区的预定义格式,您可以创建自己的格式。(在内部,或许 NumberFormat 使用的就是 DecimalFormat 。)基本的 DecimalFormat 功能在 J2SE 平台的 1.4 版中并没有改变。改变之处在于添加了 formatToCharacterIterator()、 getCurrency() 和 setCurrency() 方法。

我们将快速浏览一下新的 formatToCharacterIterator 方法及其关联的 NumberFormat.Field 类。J2SE 1.4 引入了 CharacterIterator 的概念,它允许双向地遍历文本。对于 formatToCharacterIterator ,您将获得它的子接口 AttributedCharacterIterator ,这个子接口允许您找出关于该文本的信息。对于 DecimalFormat 的情况 ,那些属性是来自 NumberFormat.Field 的键 。通过使用 AttributedCharacterIterator , 您完全可以根据所产生的结果构造自己的字符串输出 。清单3使用了一个百分数实例来提供一个简单的演示:

清单 3. 使用 formatToCharacterIterator()

import java.text.*; import java.util.*; public class DecimalSample {   public static void main(String args[]) {    double amount = 50.25;    NumberFormat usFormat = NumberFormat.getPercentInstance(Locale.US);    if (usFormat instanceof DecimalFormat) {     DecimalFormat decFormat = (DecimalFormat)usFormat;     AttributedCharacterIterator iter =      decFormat.formatToCharacterIterator(new Double(amount));      for (char c = iter.first();        c != CharacterIterator.DONE;        c = iter.next()) {       // Get map for current character       Map map = iter.getAttributes();       // Display its attributes       System.out.println("Char: " + c + " / " + map);    }    }   } }

清单4显示了程序的输出(显示在一小段消息之后,以使其更易于阅读)。基本上, formatToCharacterIterator() 方法的工作方式与调用 format() 相同,只不过前者除了格式化输出字符串外,还要使用属性来标记输出中的每个字符(例如,位于位置 X 处的字符是否为一个整数?)。将 50.25 显示为百分数,在美国地区的输出为“5,025%”。通过检查输出 ,除“%”外的每个字符都是整数,包括冒号 。除了数值之外 ,逗号也被标记为一个分组分隔符,百分号被标记为一个百分数。每个数字的属性都是一个 java.util.Map ,其中每个属性被显示为 key=value (键=值)的形式。在存在多个属性的情况下,属性列表中的属性之间用逗号分隔。

清单 4. formatToCharacterIterator() 输出

Char: 5 / {java.text.NumberFormat$Field(integer)=   java.text.NumberFormat$Field(integer)} Char: , / {java.text.NumberFormat$Field(grouping separator)=   java.text.NumberFormat$Field(grouping separator),   java.text.NumberFormat$Field(integer)=   java.text.NumberFormat$Field(integer)} Char: 0 / {java.text.NumberFormat$Field(integer)=   java.text.NumberFormat$Field(integer)} Char: 2 / {java.text.NumberFormat$Field(integer)=   java.text.NumberFormat$Field(integer)} Char: 5 / {java.text.NumberFormat$Field(integer)=   java.text.NumberFormat$Field(integer)} Char: % / {java.text.NumberFormat$Field(percent)=   java.text.NumberFormat$Field(percent)}

Merlin的魔力: 格式化数值和货币(3)

时间:2011-02-02 IBM John Zukowski

基于值范围和 ChoiceFormat 确定消息

ChoiceFormat 是

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号