如何比较货币数字格式的值
Posted
技术标签:
【中文标题】如何比较货币数字格式的值【英文标题】:How to compare values of currency number formats 【发布时间】:2019-11-16 06:18:02 【问题描述】:The code in the picture returning false in both cases of comparison, what values should be given to get the true value
【问题讨论】:
第一个println在控制台输出什么? java.text.DecimalFormat@7adaa R$ 466,56 【参考方案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 的原因。
【讨论】:
以上是关于如何比较货币数字格式的值的主要内容,如果未能解决你的问题,请参考以下文章