Подтвердить что ты не робот

Преобразование строки с точкой или запятой в числовое число

Мне всегда нравится ввод в мою функцию, чтобы получить числа, которые варьируются от 0,1 до 999,9 (десятичная часть всегда разделяется символом "." , если нет десятичной, тогда нет "." , например, 9 или 7.

Как преобразовать эту String в значение float независимо от локализации (некоторые страны используют "," для разделения десятичной части числа. Я всегда получаю ее с помощью "." )? Это зависит от настроек локального компьютера?

4b9b3361

Ответ 1

Метод Float.parseFloat() не зависит от языка. Он ожидает точку в виде десятичного разделителя. Если десятичный разделитель на вашем входе всегда является точкой, вы можете использовать это безопасно.

Класс NumberFormat предоставляет языковой анализ и формат, если вам нужно адаптироваться для разных локалей.

Ответ 2

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
DecimalFormat format = new DecimalFormat("0.#");
format.setDecimalFormatSymbols(symbols);
float f = format.parse(str).floatValue();

Ответ 3

valueStr = valueStr.replace(',', '.');
return new Float(valueStr);

Готово

Ответ 4

См. java.text.NumberFormat и DecimalFormat:

 NumberFormat nf = new DecimalFormat ("990.0");
 double d = nf.parse (text);

Ответ 5

Как насчет этого:

Float floatFromStringOrZero(String s){
    Float val = Float.valueOf(0);
    try{
        val = Float.valueOf(s);
    } catch(NumberFormatException ex){
        DecimalFormat df = new DecimalFormat();
        Number n = null;
        try{
            n = df.parse(s);
        } catch(ParseException ex2){
        }
        if(n != null)
            val = n.floatValue();
    }
    return val;
}