在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类,并使用正确的本地值,它可以推断“,”也是一个十进制分隔符