Java 如何比较货币数字格式的值

Java 如何比较货币数字格式的值,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.o

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

与==的字符串比较可能返回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.formatfloat方法返回相同的字符串,但该空间的Unicode为'\u00a0',此Unicode字符从isWhitespace方法中排除。这就是为什么对我来说返回false。

控制台中的第一个println输出是什么?java.text。DecimalFormat@7adaaR$466,56对于我,nf.formatd正在打印466,56,而不是R$466,56Oh ok。编辑的细节。为我工作。请用我用过的代码试试谢谢。我复制了你的代码,但它仍然会重新运行我的错误,并给我十进制格式:DecimalFormat@7adaaThank你它给我的是真的,但如果我重新键入值,那么它给我的是假的。你知道为什么会这样吗