DecimalFormat возвращает «?» Вместо «-» для отрицательного двойного ввода - PullRequest
2 голосов
/ 19 сентября 2019

DecimalFormat возвращает символ ? вместо символа - , когда значение, данное ему, является отрицательным.

Я использую ATOM со SCRIPTпакет и JDK12.0.2.

Я могу заменить символ " - " практически любым другим символом, и десятичный формат даст правильный вывод.Это то, что делает эту проблему загадочной для меня.Я пытался разобраться в региональных проблемах, но не смог решить проблему.

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 голосов
/ 19 сентября 2019

Попробуйте установить java.util.Locale

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.ENGLISH);
DecimalFormat desFor = new DecimalFormat("#0.0;-#0.0", symbols);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...