如何在 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 转换为字符串
