Преобразование в / из двойников и строк независимо от локали - PullRequest
3 голосов
/ 10 декабря 2011

У меня проблемы с пользователями, для которых в качестве региональных настроек для стран, не входящих в США, возникают ошибки при преобразовании значений типа double в строки и из строк. До сих пор я считаю, что у меня есть правильный способ конвертировать строки в двойные:

public double stringToDouble(String s){
        try {
            return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue();
        } catch (ParseException e) {
            e.printStackTrace();
            return 0.0;
        }
    }

То есть, взятие ввода из поля EditText и преобразование его в двойное число. Однако у меня возникли проблемы с преобразованием значений типа double в строки для заполнения других полей EditText. Вот код, который я использую, пользователи сообщают о сбоях:

public String doubleToString(double d, String pattern){

        DecimalFormat df =(DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
        df.applyLocalizedPattern(pattern);

        return df.format(d);
    }

Я использую строку шаблона, основанную на количестве десятичных разрядов в текстовом поле редактирования, например "# 0.00"

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

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 18 июля 2012

Вы можете использовать Locale.US вместо Locale.getDefault.Очевидно, что ваши строковые представления значений типа double не предназначены для прямого взаимодействия с людьми, и поэтому текущая локаль определенно не должна влиять на их интерпретацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...