将带有点或逗号的字符串转换为浮点数
我总是喜欢在我的函数中输入数字,范围从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.NumberFormat
和DecimalFormat
:
NumberFormat nf = new DecimalFormat ("990.0"); double d = nf.parse (text);