如何在 Java 中把字串轉換為雙數

Rupam Yadav 2023年1月30日 2020年9月19日
  1. Double.parseDouble() 將字串轉換為 Double 的方法
  2. Double.valueOf() 將字串轉換為 Double 的方法
  3. DecimalFormat.parse 將一個字串轉換為雙數
  4. 將字串值轉換為雙精度值 Double 時處理 NumberFormatException 的方法
如何在 Java 中把字串轉換為雙數

我們將通過一些簡單易懂的例子介紹在 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 類可以返回 intbyte 等不同的值,所以需要在 try-catch 塊中進行所有操作。

但由於 DecimalFormat 類可以返回不同的值,如 intbyte,所以需要在 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
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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 String