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

我总是喜欢在我的函数中输入数字,范围从0.1到999.9(小数部分总是用’。’分隔,如果没有小数,那么没有’。’,例如9或7。

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

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

如果需要适应不同的语言环境, NumberFormat类提供语言环境感知的解析和格式。

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

完成

那这个呢:

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

请参阅java.text.NumberFormatDecimalFormat

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