Konvertieren Sie String in Java in Double


Antworten:


471

Sie können verwenden Double.parseDouble(), um a Stringin a zu konvertieren double:

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

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

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

meine Codierung sollte also double total = Double.parseDouble (string) sein;?
TinyBelly

4
@TinyBelly: Ja, es sieht so aus, als ob Sie wollen:double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34

1
@TinyBelly: Sie müssen den Teil des Textes aus der Zeichenfolge extrahieren, die Sie für das Double analysieren möchten. Hier ist eine Möglichkeit, wie Sie dies für Ihren Fall tun können, obwohl ich nicht garantieren kann, dass es für alles funktioniert: double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));- Dies ersetzt im Grunde alle Zeichen, die keine Zahl oder .nichts sind, und lässt nur die Zahl und den Dezimalpunkt zu analysieren.
WhiteFang34

4
Die Verwendung von double für Preisberechnungen ist nicht ratsam.
Bozho

2
Für diejenigen , gelockt hier während für Ergebnis der Klasse der Suche Doublestatt Urtyp doubleVerwendung Double.valueOf(String).
Pshemo

48

Wenn Sie Probleme beim Parsen von Zeichenfolgen auf Dezimalwerte haben, müssen Sie "," in der Zahl durch "ersetzen.


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

2
Eine weitere Option: DecimalFormat df = new DecimalFormat (); DecimalFormatSymbols sfs = new DecimalFormatSymbols (); sfs.setDecimalSeparator (','); df.setDecimalFormatSymbols (sfs); df.parse (Nummer);
Robertiano

37

Versuchen Sie Folgendes, um eine Zeichenfolge wieder in ein Double umzuwandeln

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

Die parseDouble-Methode erzielt den gewünschten Effekt, ebenso wie die Double.valueOf () -Methode.


2
Nein, String.valueOf (etwas) gibt eine String-Darstellung von etwas zurück: Wenn etwas ein integrierter Typ ist oder wenn es ein Objekt ist und null ist, entspricht es ansonsten someObject.toString (). Um ein Double aus einem String zu erhalten, muss man es umgekehrt machen, wie in den anderen Antworten gezeigt (Double.valueOf (someString) gibt ein Double zurück und Double.parseDouble (someString) gibt ein Double zurück).
Johann Petrak

36
double d = Double.parseDouble(aString);

Dies sollte den String aString in das Double d konvertieren.


aString bezieht sich auf was? Kannst du mir helfen, mehr zu erklären?
TinyBelly

2
aString ist nur eine Zeichenfolge. Genauer gesagt die Zeichenfolge, die Sie in eine Zahl konvertieren möchten.
Andreas Vinter-Hviid

30

Verwenden Sie new BigDecimal(string). Dies garantiert später eine ordnungsgemäße Berechnung.

Als Faustregel - immer BigDecimalfür sensible Berechnungen wie Geld verwenden.

Beispiel:

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

20

Sie müssen nur String-Werte mit Double analysieren

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

14

Ich zitiere noch einmal das Zitat von Robertiano oben - denn dies ist bei weitem 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();



3

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
}

Wenn Sie beispielsweise den String "4 55,63. 0" eingeben, wird die doppelte Nummer 45563.0 ausgegeben


2

Die Verwendung Double.parseDouble()ohne umgebenden try/catchBlock kann möglicherweise NumberFormatExceptiondazu führen, dass die Eingabe-Doppelzeichenfolge nicht einem gültigen Format entspricht.

Guava bietet hierfür eine Dienstprogrammmethode an, die zurückgegeben wird, nullfalls 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);

Zur Laufzeit wird eine fehlerhafte String-Eingabe nullzugewiesenvalueDouble


"Gibt 0.0 zurück, falls Ihr String nicht analysiert werden kann" - Der Javadoc unterstützt diese Behauptung nicht.
Tom

@ Tom Es gibt den Nullwert Double Type zurück, der in 0.0 Double Type konvertiert werden kann - DYS vor 13 Sekunden edit
DYS

1
Es kann, aber nicht automatisch, und Ihr Snippet tut dies nicht.
Tom

1

Verwenden Sie diese Option, um eine beliebige String-Nummer 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 jede Saite doppelt 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;
}


0

Sie können double.parseDouble () verwenden;

String num = "10.1";
Double x = Double.parseDouble(num);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.