当给定的值为负数时,DecimalFormat 返回 ? 符号来代替 - 符号。
我使用带有 SCRIPT 包和 JDK12.0.2 的 ATOM。
我可以用几乎任何其他符号替换“-”符号,DecimalFormat 将给出正确的输出。这就是这个问题让我感到困惑的原因。我尝试调查区域设置问题,但未能解决问题。
double nTest = -20.20;
System.out.println("simtest " + nTest + "C");
private static DecimalFormat desFor = new DecimalFormat("#0.0;-#0.0");
System.out.println("simtest " + desFor.format(-20.20) + "C");
System.out.println("simtest " + desFor.format(21.45) + "C");
private static DecimalFormat desForAny = new DecimalFormat("#0.0;*#0.0");
System.out.println("simtest " + desForAny.format(-20.20) + "C");
Results
simtest -20.2C
simtest ?20,2C <=== expected -20,2C
simtest 21,4C
simtest *20,2C
最佳答案
尝试设置java.util.Locale
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.ENGLISH);
DecimalFormat desFor = new DecimalFormat("#0.0;-#0.0", symbols);
关于java - 对于负 Double 输入,DecimalFormat 返回 "? "而不是 "- ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58000785/