在String中将String转换为float

时间:2017-05-15 07:36:12

标签: java string string-conversion parsefloat

我正在尝试使用float.parsefloat()方法将String解析为float,但它给出了关于格式的错误。

int v_CurrentPosX = Math.round(Float.parseFloat(v_posString)); //where v_posString is the float that I want to convert in this case 5,828

错误:

  

线程“main”中的异常java.lang.NumberFormatException:用于输入   字符串:“5,828”at   sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)     在sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)

4 个答案:

答案 0 :(得分:4)

您的问题是冒号()不是JVM中的默认语言环境...

您可以使用NumberFormat,使用正确的区域设置

String x = "5,828";
NumberFormat myNumForm = NumberFormat.getInstance(Locale.FRENCH);
double myParsedFrenchNumber = (double) myNumForm.parse(x);
System.out.println("D: " + myParsedFrenchNumber);

答案 1 :(得分:0)

在解析之前尝试用点替换逗号:

v_posString =  v_posString.replace(",",".");
int v_CurrentPosX = Math.round(Float.parseFloat(v_posString));

问题是您的语言环境设置为使用.表示浮点数,而不是,

答案 2 :(得分:0)

试试这个

NumberFormat.getNumberInstance(Locale.FRANCE).parse("5,828");

答案 3 :(得分:0)

Float.parseFloat()并不考虑语言环境,总是希望'。'是你的小数点分隔符。您可以改用DecimalFormat。

    DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    symbols.setDecimalSeparator(',');

    String str = "5,200";

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