将字符串转换为 java 中的浮点数

Convert a String to float in java

我正在尝试使用 float.parsefloat() 方法将字符串解析为浮点数,但它给出了有关格式的错误。

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

错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "5,828" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)

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

您可以为此使用 NumberFormat,并使用正确的语言环境

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

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

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

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

试试这个

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

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();