如何在 Java 中把字符串转换为双数
-
Double.parseDouble()
将字符串转换为Double
的方法 -
Double.valueOf()
将字符串转换为 Double 的方法 -
DecimalFormat.parse
将一个字符串转换为双数 -
将字符串值转换为双精度值
Double
时处理NumberFormatException
的方法
我们将通过一些简单易懂的例子介绍在 Java 中把给定的字符串转换为双精度 Double
的不同方法。
Double.parseDouble()
将字符串转换为 Double
的方法
在 Java 中,将字符串转换为 double 的最佳和最简单的方法是使用 Double
类的静态方法 parseDouble
。
Double.parseDouble
返回一个基元类型。
public class Main {
public static void main(String[] args) {
String stringValue = "12.34";
double doubleValue = Double.parseDouble(stringValue);
System.out.println("Converted value: " + doubleValue);
}
}
输出:
Converted value: 12.34
它可以是字符串中的负值或正值;该方法将正确地将字符串解析为 double
。
public class Main {
public static void main(String[] args) {
String stringValueNegative = "-12.34";
String stringValuePositive = "+12.34";
double doubleValueNegative = Double.parseDouble(stringValueNegative);
double doubleValuePositive = Double.parseDouble(stringValuePositive);
System.out.println("Converted negative value: " + doubleValueNegative);
System.out.println("Converted positive value: " + doubleValuePositive);
}
}
输出:
Converted negative value: -12.34
Converted positive value: 12.34
Double.valueOf()
将字符串转换为 Double 的方法
当我们需要一个 Double
对象而不是一个基元类型的 double 时,我们可以使用 Double.valueOf
方法从一个字符串中获取一个 double 对象的值。
public class Main {
public static void main(String[] args) {
String stringValueNegative = "-12.08d";
String stringValuePositive = "+12.3400";
Double doubleValueNegative = Double.valueOf(stringValueNegative);
Double doubleValuePositive = Double.valueOf(stringValuePositive);
System.out.println(doubleValueNegative);
System.out.println(doubleValuePositive);
}
}
输出:
-12.08
12.34
DecimalFormat.parse
将一个字符串转换为双数
如果我们想要的值是 1,11,111.12d
,我们可以使用 DecimalFormat
类将字符串解析为 doubleValue()
.但由于 DecimalFormat
类可以返回 int
或 byte
等不同的值,所以需要在 try-catch
块中进行所有操作。
但由于 DecimalFormat
类可以返回不同的值,如 int
或 byte
,所以需要在 try-catch
块中进行所有操作。由于我们希望得到一个 doubleValue,我们必须使用 doubleValue()
方法来明确得到 double
类型。
import java.text.DecimalFormat;
import java.text.ParseException;
public class Main {
public static void main(String[] args) {
String stringValue = "1,11,111.12d";
try {
double doubleValue = DecimalFormat.getNumberInstance().parse(stringValue).doubleValue();
System.out.println(doubleValue);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
输出:
111111.12
将字符串值转换为双精度值 Double
时处理 NumberFormatException
的方法
有时我们可能会得到 NumberFormatException
。发生这种情况是因为字符串值不是有效的双精度值。
为了使它更清楚,我们将看到一个简单的例子,它将抛出这个异常。
public class Main {
public static void main(String[] args) {}
String stringValue = "1,11";
double d = Double.parseDouble(stringValue);
System.out.println(d);
}
}
异常的输出。
Exception in thread "main" java.lang.NumberFormatException : For input string : "1,11" at java.base
/ jdk.internal.math.FloatingDecimal.readJavaFormatString(
FloatingDecimal.java : 2054) at java.base
/ jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java : 110) at java.base
/ java.lang.Double.parseDouble(Double.java : 543) at com.company.Main.main(Main.java : 14)
异常发生的原因是 1,11
不是一个有效的双精度值。解决这个错误的方法是用小数点代替逗号,就像我们下面做的那样。
public class Main {
public static void main(String[] args) {
String stringValue = "1,11";
double d = Double.parseDouble(stringValue.replace(",", "."));
System.out.println(d);
}
}
输出:
1.11
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn相关文章 - Java Double
- 在 Java 中将 Int 转换为 Double
- 在 Java 中将 Long 转换为 Double
- Java 中的双精度
- 在 Java 中比较双精度数
- Java 中的浮点数和 Double 数据类型
- 在 Java 中将 Double 转换为字符串