【问题标题】:Java NumberFormat instance creation [closed]Java NumberFormat 实例创建[关闭]
【发布时间】:2021-01-17 07:10:03
【问题描述】:

在使用 NumberFormat 和 Locale 类时有这个疑问 这种方法有什么区别

NumberFormat nf = NumberFomat.getCurrencyInstance();
nf.setCurrency(Currency.getInstance(Locale.US));
String us = getCurrency().getDisplayName();

而这种方法

NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);

【问题讨论】:

  • 第一个 sn-p 中的第三行代码真的需要吗?如果没有,请删除。让您的问题尽可能简单和有针对性,不要分心。
  • 第一个版本有两个错误导致它无法编译。 NumberFomatgetCurrency() 都是未定义的。因此,不同之处在于,第一种方法会导致编译错误,而第二种方法会生成一个 NumberFormat 实例,该实例将数字打印为美国语言环境规定的货币。

标签: java currency number-formatting


【解决方案1】:

Java 1.1 与 1.4

一个似乎是 Java 1.1 的遗留代码,另一个是 Java 1.4 的现代代码。

NumberFormat 类及其 getCurrencyInstance() 方法似乎都可以追溯到 Java 1.1。

Currency 类直到 Java 1.4 才添加到 Java 中。所以 NumberFormat#setCurrency 方法直到 Java 1.4 才出现。

我快速浏览了 Javadoc,没有看到任何指导。我不知道这里的完整故事。但我倾向于使用较新的代码。我会明确地得到我的Currency 实例,并传递给setCurrency。但也许其他人会发布更好的答案来解释是否实际上存在任何实际差异。


顺便提一下,注意Currency类的描述底部:

建议在处理货币或货币值时使用 BigDecimal 类,因为它可以更好地处理浮点数及其运算。

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多