Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将字符串转换为float_Java_String_String Conversion_Parsefloat - Fatal编程技术网

在java中将字符串转换为float

在java中将字符串转换为float,java,string,string-conversion,parsefloat,Java,String,String Conversion,Parsefloat,我试图用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 错误是: 线程“main”java.lang.NumberFormatException中的异常:用于输入 字符串:“582

我试图用
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
错误是:

线程“main”java.lang.NumberFormatException中的异常:用于输入 字符串:“5828”位于 sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) 位于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");

浮点。PARSEFLAUTE()不考虑区域设置,总是期望'.'是小数点分隔符。您可以改为使用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();

提示:5828可能是一个浮点数,具体取决于您的语言环境您的
语言环境是什么
?将您的输入字符串从
5828
更改为
5.828
如果我让点和什么是语言环境,则会出现同样的问题?请参阅语言环境定义正式使用的数字、日期、时间格式,等等。我会使用DataFormat类,并使用正确的本地值,它可以推断“,”也是一个十进制分隔符