将字符串转换为 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();
我正在尝试使用 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();