如何在 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 轉換為字串
