【问题标题】:How to compare values of currency number formats如何比较货币数字格式的值
【发布时间】:2019-11-16 06:18:02
【问题描述】:

【问题讨论】:

  • 第一个println在控制台输出什么?
  • java.text.DecimalFormat@7adaa R$ 466,56

标签: java compare number-formatting currency-formatting


【解决方案1】:

首先请添加代码而不是图像。很难帮助处理图像中的代码。

与 == 的字符串比较可能返回 true,也可能不返回 true。使用等于

所以你的代码给出以下输出

public static void main(String[] args) {
    Locale br = new Locale("pt", "BR");
    NumberFormat nf = NumberFormat.getCurrencyInstance(br);
    float d = 466.56f;
    System.out.println(nf+" : "+nf.format(d));
    System.out.println(nf.format(d) == "R$ 466,56");  // will return false.
    System.out.println(nf.format(d).equals("R$ 466,56")); // compare string with equals
}

输出:

java.text.DecimalFormat@7ad2a : R$ 466,56
false
true

【讨论】:

  • 对我来说 nf.format(d) 打印的是 466,56 而不是 R$ 466,56
  • 哦,好的。编辑细节。为我工作。请尝试使用我使用过的代码
  • 谢谢。我复制了你的代码,但它仍然返回错误并给我十进制格式:DecimalFormat@7adaa
  • 谢谢。它给了我真实的信息,但是如果我重新输入了该值,那么它给了我错误的信息。你知道它为什么会这样吗
【解决方案2】:

问题是,空格有不同的 unicode。我键入时获得的空间的 Unicode 是 '\u0020' 但 NumberFormat.getCurrencyInstance.format(float) 方法返回相同的字符串,但该空间的 unicode 为 '\u00a0' 并且这个 unicode 字符被排除在 isWhitespace() 方法之外。这就是为什么它对我返回 false 的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    相关资源
    最近更新 更多