如何在Java中将字符串转换为双精度

时间:2020-01-09 10:35:29  来源:igfitidea点击:

要将Java中的String转换为double,可以使用以下选项之一

  • Double.parseDouble(String s)-返回一个新的double,它初始化为指定String表示的值。如果字符串不包含可分析的double则抛出NumberFormatException。
  • Double.valueOf(String s)–返回一个Double对象,其中包含参数字符串s表示的double值。如果字符串不包含可解析的数字,则引发NumberFormatException。

如我们所见,parseDouble()方法返回一个double原语,而valueOf()方法则返回一个Double对象。

Java示例,使用Double.parseDouble将String转换为double

public class StringToDouble {
  public static void main(String[] args) {
    String num = "145.34526";
    try{
      double d = Double.parseDouble(num);
      System.out.println("Value- " + d);
      // can be used in arithmetic operations now
      System.out.println(d+"/3 = " + d/3);
    }catch(NumberFormatException ex){
      System.out.println("Error while conversion " + ex.getMessage());
    }
  }
}

输出:

Value- 145.34526
145.34526/3 = 48.44842

对于双精度数字,可以使用" d"或者" D"(偶数f或者F表示双精度),因此这样的字符串–" 145.34d"在转换时不会导致NumberFormatException。但是使用" 145.34c"之类的其他字母会抛出异常。

public class StringToDouble {

	public static void main(String[] args) {
		String num = "145.34526d";
		try{
			double d = Double.parseDouble(num);
			System.out.println("Value- " + d);
			// can be used in arithmetic operations now
			System.out.println(d+"/3 = " + d/3);
		}catch(NumberFormatException ex){
			System.out.println("Error while conversion " + ex.getMessage());
		}
	}
}

输出:

Value- 145.34526
145.34526/3 = 48.44842

Java示例,使用Double.valueOf将String转换为double

public class StringToDouble {

	public static void main(String[] args) {
		String str = "-245.67456";
		try{
			Double d = Double.valueOf(str);
			System.out.println("value- " + d);
		}catch(NumberFormatException exp){
			System.out.println("Error in conversion " + exp.getMessage());
			throw exp;
		} 
	}
}

输出:

value- -245.67456

NumberFormatException

在Java中将字符串转换为双精度时,如果传递了无效的数字字符串进行转换,则会引发NumberFormatException。

public class StringToDouble {

	public static void main(String[] args) {
		String str = "45.674c";
		try{
			Double d = Double.valueOf(str);
			System.out.println("value- " + d);
		}catch(NumberFormatException exp){
			System.out.println("Error in conversion " + exp.getMessage());
			throw exp;
		} 
	}
}

输出:

Error in conversion For input string: "45.674c"Exception in thread "main" 
java.lang.NumberFormatException: For input string: "45.674c"
	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 java.base/java.lang.Double.valueOf(Double.java:506)
	at com.theitroad.programs.StringToDouble.main(StringToDouble.java:8)