快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

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

时间:2011-02-02 IBM John Zukowski

java.text 包允许通过与特定语言无关的方式格式化文本消息、日期和数值。许多人配合 MessageFormat 类使用资源包来为用户本地化消息。更多的人似乎使用 DateFormat 和 SimpleDateFormat 类来操作日期字符串,既用于输入也用于输出。最少见的用法似乎是使用 NumberFormat 类及其相关的子类 DecimalFormat 和 ChoiceFormat 。在本月的讨论中,我们将研究一下这三个未得到充分利用的类以及 Currency 类,看看 J2SE 1.4 已经变得有多么的全球化。

数值格式化基类:NumberFormat

如果您来自美国,您会在较大的数值中间放置逗号来表示千和百万(等等,每三个数值使用一个逗号)。对于浮点数,您将在整数部分和小数部分之间放置小数点。对于金钱,货币符号 $ 放在金额的前面。如果 您从来没有到过美国以外的地方,可能就不会关心用元(¥)来格式化的日本货币,用英镑(£)来格式化的英国货币,或者用欧元(€)来表示的其他欧洲国家的货币。

对于那些我们确实关心的货币,我们可以使用 NumberFormat 及其相关的类来格式化它们。开发人员使用 NumberFormat 类来读取用户输入的数值,并格式化将要显示给用户看的输出。

与 DateFormat 类似, NumberFormat 是一个抽象类。您永远不会创建它的实例――相反,您总是使用它的子类。虽然可以通过子类的构造函数直接创建子类,不过 NumberFormat 类提供了一系列 get XXXInstance() 方法,用以获得不同类型的数值类的特定地区版本。这样的方法共有五个:

getCurrencyInstance()

getInstance()

getIntegerInstance()

getNumberInstance()

getPercentInstance()

具体使用哪一个方法取决于您想要显示的数值类型(或者想要接受的输入类型)。每个方法都提供了两个版本――一个版本适用于当前地区,另一个版本接受一个 Locale作为参数,以便可能地指定一个不同的地区。

在 J2SE 1.4中, NumberFormat 新增的内容是 getIntegerInstance()、 getCurrency() 和 setCurrency() 方法。下面让我们研究一下新的 getIntegerInstance() 方法。稍后将会探讨 get/set 货币方法。

使用 NumberFormat 的基本过程是获得一个实例并使用该实例。挑选恰当的实例的确需要费一番思量 。通常您不希望使用通用的 getInstance 或者 getNumberInstance() 版本 ,因为您不确切知道您将会得到什么。相反 ,您会使用像 getIntegerInstance() 这样的方法 ,因为您希望把某些内容显示为整数而不需要任何小数值 。清单1展示了这一点 ,我们在其中把数值 54321 显示为适合于美国和德国的格式。

清单 1. 使用 NumberFormat

import java.text.*; import java.util.*; public class IntegerSample {   public static void main(String args[]) {    int amount = 54321;    NumberFormat usFormat =     NumberFormat.getIntegerInstance(Locale.US);    System.out.println(usFormat.format(amount));    NumberFormat germanFormat =     NumberFormat.getIntegerInstance(Locale.GERMANY);    System.out.println(germanFormat.format(amount));   } }

运行该代码将产生如清单2所示的输出。注意第一种格式(美国)中的逗号分隔符和第二种格式中的点号分隔符。

清单 2. NumberFormat 输出

54,321 54.321

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

时间:2011-02-02 IBM John Zukowski

学习如何迭代 DecimalFormat 中的字符

虽然 NumberFormat 是一个抽象类,并且您将通过像 getIntegerInstance() 这样的各种方法来使用它的实例,但是 DecimalFormat 类提供了该类的一个具体版本。 您可以显式地指定字符模式,用以确定

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号