it-swarm.com.de

Konvertiere String in double in Java

Wie kann ich ein String wie "12.34" in ein double in Java konvertieren?

268
TinyBelly

Sie können Double.parseDouble() verwenden, um ein String in ein double zu konvertieren:

String text = "12.34"; // example String
double value = Double.parseDouble(text);

Für Ihren Fall sieht es so aus, als ob Sie:

double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
449
WhiteFang34

Wenn Sie Probleme beim Parsen von Zeichenfolgen auf Dezimalwerte haben, müssen Sie "," durch "." Ersetzen.


String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
47
TmRocha

Versuchen Sie Folgendes, um eine Zeichenfolge wieder in eine doppelte umzuwandeln

String s = "10.1";
Double d = Double.parseDouble(s);

Die parseDouble-Methode und die Double.valueOf () -Methode erzielen den gewünschten Effekt.

37
Alex Oczkowski
double d = Double.parseDouble(aString);

Dies sollte den String aString in das double d konvertieren.

36

Verwenden Sie new BigDecimal(string). Dies garantiert später eine korrekte Berechnung.

Als Faustregel gilt: Verwenden Sie immer BigDecimal für sensible Berechnungen wie Geld.

Beispiel:

String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
29
Bozho

Sie müssen nur String-Werte mit Double analysieren

String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
20
Harshal Patil

Ich zitiere noch einmal das Zitat von Robertiano oben - denn dies ist mit Abstand die vielseitigste und lokalisierungsadaptivste Version. Es verdient einen vollen Beitrag!

Andere Option:

DecimalFormat df = new DecimalFormat(); 
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(','); 
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();
14
JBWanscher
String double_string = "100.215";
Double double = Double.parseDouble(double_string);
8

Es gibt auch einen anderen Weg.

Double temp = Double.valueOf(str);
number = temp.doubleValue();

Double ist eine Klasse und "temp" ist eine Variable. "number" ist die endgültige Nummer, die Sie suchen.

4
Jiten

Das würde ich tun

    public static double convertToDouble(String temp){
       String a = temp;
       //replace all commas if present with no comma
       String s = a.replaceAll(",","").trim(); 
      // if there are any empty spaces also take it out.          
      String f = s.replaceAll(" ", ""); 
      //now convert the string to double
      double result = Double.parseDouble(f); 
    return result; // return the result
}

Zum Beispiel geben Sie den String "4 55,63. 0" ein, die Ausgabe erhält die doppelte Zahl 45563.0

3
faisalsash

Die Verwendung von Double.parseDouble() ohne umgebenden try/catch -Block kann dazu führen, dass NumberFormatException die Eingabe-Doppelzeichenfolge nicht einem gültigen Format entspricht.

Guava bietet hierfür eine Utility-Methode an, die null zurückgibt, falls Ihr String nicht analysiert werden kann.

https://google.github.io/guava/releases/19.0/api/docs/com/google/common/primitives/Doubles.html#tryParse (Java.lang.String

Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);

In der Laufzeit ergibt eine fehlerhafte Zeichenfolge-Eingabe null, die valueDouble zugewiesen ist.

2
DYS
String s = "12.34";
double num = Double.valueOf(s);
1

Wird verwendet, um eine beliebige Zeichenfolgennummer in double zu konvertieren, wenn Sie int benötigen. Konvertieren Sie einfach den Datentyp von num und num2 in int. nahm alle Fälle für einen String Double mit Eng: "Bader Qandeel"

public static double str2doubel(String str) {
    double num = 0;
    double num2 = 0;
    int idForDot = str.indexOf('.');
    boolean isNeg = false;
    String st;
    int start = 0;
    int end = str.length();

    if (idForDot != -1) {
        st = str.substring(0, idForDot);
        for (int i = str.length() - 1; i >= idForDot + 1; i--) {
            num2 = (num2 + str.charAt(i) - '0') / 10;
        }
    } else {
        st = str;
    }

    if (st.charAt(0) == '-') {
        isNeg = true;
        start++;
    } else if (st.charAt(0) == '+') {
        start++;
    }

    for (int i = start; i < st.length(); i++) {
        if (st.charAt(i) == ',') {
            continue;
        }
        num *= 10;
        num += st.charAt(i) - '0';
    }

    num = num + num2;
    if (isNeg) {
        num = -1 * num;
    }
    return num;
}