【发布时间】:2019-11-16 06:18:02
【问题描述】:
【问题讨论】:
-
第一个println在控制台输出什么?
-
java.text.DecimalFormat@7adaa R$ 466,56
标签: java compare number-formatting currency-formatting
【问题讨论】:
标签: java compare number-formatting currency-formatting
首先请添加代码而不是图像。很难帮助处理图像中的代码。
与 == 的字符串比较可能返回 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
【讨论】:
问题是,空格有不同的 unicode。我键入时获得的空间的 Unicode 是 '\u0020' 但 NumberFormat.getCurrencyInstance.format(float) 方法返回相同的字符串,但该空间的 unicode 为 '\u00a0' 并且这个 unicode 字符被排除在 isWhitespace() 方法之外。这就是为什么它对我返回 false 的原因。
【讨论】: