我正在尝试使用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)
答案 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();