Строка с двойной локализацией ошибки - PullRequest
1 голос
/ 27 августа 2011

В моем приложении я использую текстовые поля для ввода десятичных числовых значений.

Оттуда я использую

Double.valueOf();

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

Как мне убедиться, что этого не произойдет?Кроме того, я должен использовать Double.ParseDouble () или Double.valueOf ()?

Спасибо.

1 Ответ

1 голос
/ 05 сентября 2011

Я использую следующие методы Java для анализа двойного числа, которое было набирается пользователем и сохраняется в строке s.

Однако я знаю локаль, которую использует пользователь. Если вы этого не сделаете знаю, тогда трудно быть уверенным, как разобрать число потому что значение типа «100.000» означает разные вещи в разных локалях.

NumberFormat numberFormat = DecimalFormat.getInstance(locale);
numberFormat.setGroupingUsed(false);
ParsePosition parsePosition = new ParsePosition(0);
Number n = numberFormat.parse(s, parsePosition);
if (n == null || parsePosition.getErrorIndex() >= 0 || parsePosition.getIndex() < s.length())
{
  /* not a valid number */
}
...