将带有点或逗号的字符串转换为浮点数

时间:2011-03-08 13:19:45

标签: java

我总是喜欢在我的函数中输入数字,范围从0.1到999.9(小数部分总是以'。'分隔,如果没有小数,则没有'。',例如9或7。 / p>

如何将此String转换为浮点值而不管本地化(某些国家/地区使用','来分隔数字的小数部分。我总是使用'​​。'来获取它)?这取决于本地计算机设置吗?

6 个答案:

答案 0 :(得分:21)

Float.parseFloat()方法不依赖于语言环境。它期望一个点作为小数分隔符。如果输入中的小数点分隔符始终为点,则可以安全地使用它。

如果您需要适应不同的区域设置,NumberFormat类提供了区域设置感知的解析和格式。

答案 1 :(得分:19)

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

答案 2 :(得分:17)

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

完成

答案 3 :(得分:6)

这个怎么样:

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;
}

答案 4 :(得分:5)

请参阅java.text.NumberFormatDecimalFormat

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

答案 5 :(得分:0)

我希望这段代码可以对您有所帮助。

public static Float getDigit(String quote){
        char decimalSeparator = new DecimalFormatSymbols().getDecimalSeparator();
        String regex = "[^0-9" + decimalSeparator + "]";
        String valueOnlyDigit = quote.replaceAll(regex, "");

        if (String.valueOf(decimalSeparator).equals(",")) {
            valueOnlyDigit = valueOnlyDigit.replace(",", ".");
            //Log.i("debinf purcadap", "substituted comma by dot");
        }

        try {
            return Float.parseFloat(valueOnlyDigit);
        } catch (ArithmeticException | NumberFormatException e) {
            //Log.i("debinf purcadap", "Error in getMoneyAsDecimal", e);
            return null;
        }
    }