4

我正在尝试将字符串转换为,Integer/Float/Double但我得到了一个NumberFormatException.

我的字符串是37,78584,现在我将其转换为我得到的任何一个NumberFormatException

我怎样才能将其转换string为其中任何一个。

请帮助我摆脱这个问题。

4

9 回答 9

12

您必须为数字使用适当的语言环境,例如

String s = "37,78584";
Number number = NumberFormat.getNumberInstance(Locale.FRENCH).parse(s);
double d= number.doubleValue();
System.out.println(d);

印刷

37.78584
于 2012-09-11T08:16:15.580 回答
1

使用类似Type.parseSomethingandType.valueOf的方法不是最佳选择,因为它们的行为取决于语言环境。例如,在某些语言中,十进制分隔符是 '.' 其他','中的符号。因此,在某些系统中,代码运行良好,而在其他系统中,它会崩溃并抛出异常。更合适的方法是使用格式化程序。JDK 和 Android SDK 有许多可随时使用的格式化程序,用于多种用途,与区域设置无关。看看数字格式

于 2012-09-11T08:41:03.547 回答
1

检查字符串值

if(String .equals(null or ""){

} else{
    //Change to integer
}
于 2012-09-11T08:23:48.290 回答
1

替换为字符串中,""空白,然后转换您的数字

String str = "37,78584";
str = str.replaceAll("\\,","");
于 2012-09-11T08:13:19.453 回答
1

最佳实践是使用使用逗号作为分隔符的区域设置,例如法语区域设置:

double d = NumberFormat.getNumberInstance(Locale.FRENCH).parse("37,78584").doubleValue();

最快的方法就是用句号替换任何逗号。

double d = String.parseDouble("37,78584".replace(",","."));
于 2012-09-11T08:50:02.837 回答
0

代替 '

String value  = "23,87465";
int value1 = Integer.parseInt(value.toString().replaceAll("[^0-9.]",""));
于 2012-09-11T08:27:45.673 回答
0

在解析之前执行此操作以删除逗号:

myString.replaceAll(",", "")​;
于 2012-09-11T08:13:26.747 回答
0

首先删除,这个,使用下面的代码

String s= "37,78584";
s=s.replaceAll(",", "");

然后使用下面的代码

对于字符串到整数:-

Integer.parseInt(s);

对于要浮动的字符串:-

Float.parseFloat(s);

对于字符串加倍: -

Double.parseDouble(s);
于 2012-09-11T08:14:18.360 回答
-1

尝试替换,然后转换为 Integer/float/double

String mysting="37,78584";
String newString=myString.replace(",", "");
int value=Integer.parseInt(newString);
于 2012-09-11T08:18:10.243 回答