对于否定的Double输入,DecimalFormat返回“?”而不是“-”

时间:2019-09-18 21:12:22

标签: java

当给定的值为负时,

DecimalFormat返回符号代替-符号。

我正在将ATOM与SCRIPT软件包和JDK12.0.2一起使用。

我可以用几乎任何其他符号替换“ -”符号,并且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");
  

结果

simtest -20.2C

simtest ?20,2C  <=== expected  -20,2C

simtest 21,4C

simtest *20,2C

1 个答案:

答案 0 :(得分:0)

尝试设置java.util.Locale

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.ENGLISH);
DecimalFormat desFor = new DecimalFormat("#0.0;-#0.0", symbols);