将字符串转换为整数/浮点数/双精度数

4

我正在尝试将一个字符串转换为整数/浮点数/双精度浮点数,但是出现了NumberFormatException的错误。

我的字符串是37,78584,无论我将其转换为其中任何一种类型,都会出现NumberFormatException的错误。

请问如何将这个字符串转换为任何一种类型呢?

请帮助我解决这个问题。


1
https://dev59.com/u2sy5IYBdhLWcg3w1xeU - assylias
9个回答

12

你需要使用与数字相适应的区域设置,例如:

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

打印

37.78584

1

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

String str = "37,78584";
str = str.replaceAll("\\,","");

1
使用正确的区域设置是更好的方法。你需要用句点替换逗号,而不是空格。 - assylias

1

检查字符串值

那个

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

} else{
    //Change to integer
}

1
最佳实践是使用逗号作为分隔符的区域设置,例如法语区域设置:
double d = NumberFormat.getNumberInstance(Locale.FRENCH).parse("37,78584").doubleValue();

最快的方法就是将逗号替换为句号。
double d = String.parseDouble("37,78584".replace(",","."));

1

使用像Type.parseSomethingType.valueOf这样的方法并不是最好的选择,因为它们的行为取决于语言环境。例如,在某些语言中,小数分隔符是“.”符号,而在其他语言中则是“,”。因此,在某些系统中,代码可以正常工作,而在其他系统中,则会崩溃并抛出异常。更合适的方法是使用格式化程序。JDK和Android SDK有许多可用于许多目的的现成格式化程序,这些格式化程序与语言环境无关。请查看NumberFormat


0

首先使用以下代码删除,

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

然后使用以下代码

将字符串转换为整数:

Integer.parseInt(s);

将字符串转换为浮点数:

Float.parseFloat(s);

将字符串转换为双精度浮点数:

Double.parseDouble(s);

0
的意思是替换'


String value  = "23,87465";
int value1 = Integer.parseInt(value.toString().replaceAll("[^0-9.]",""));

0

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

myString.replaceAll(",", "")​;

-1

尝试将,替换为整数/浮点数/双精度数

String mysting="37,78584";
String newString=myString.replace(",", "");
int value=Integer.parseInt(newString);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接