Converti String in double in Java


Risposte:


471

Puoi usare Double.parseDouble()per convertire a Stringin double:

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

Per il tuo caso sembra che tu voglia:

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

quindi la mia codifica dovrebbe essere doppia totale = Double.parseDouble (stringa) ;?
TinyBelly,

4
@TinyBelly: sì, sembra che tu voglia:double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34

1
@TinyBelly: devi estrarre la parte del testo dalla stringa che vuoi analizzare per il doppio. Ecco un modo in cui potresti farlo per il tuo caso, anche se non posso garantire che funzionerà per tutto: double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));- questo sostanzialmente sostituisce tutti i caratteri che non sono un numero o .nulla, lasciando solo il numero e il punto decimale da analizzare.
WhiteFang34

4
non è consigliabile utilizzare il doppio per i calcoli dei prezzi.
Bozho,

2
Per quelli attirati qui durante la ricerca di risultati di classe Doubleanziché doubleuso di tipo primitivo Double.valueOf(String).
Pshemo,

48

In caso di problemi nell'analisi della stringa in valori decimali, è necessario sostituire "," nel numero in "."


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

2
Un'altra opzione: DecimalFormat df = new DecimalFormat (); DecimalFormatSymbols sfs = new DecimalFormatSymbols (); sfs.setDecimalSeparator ( ''); df.setDecimalFormatSymbols (FS); df.parse (numero);
Robertiano,

37

Per riconvertire una stringa in una doppia, provare quanto segue

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

Il metodo parseDouble otterrà l'effetto desiderato, così come il metodo Double.valueOf ().


2
No, String.valueOf (qualcosa) restituisce una rappresentazione String di qualcosa: se qualcosa è un tipo incorporato o se è un oggetto ed è null, altrimenti è equivalente a someObject.toString (). Per ottenere un doppio da una stringa, è necessario farlo al contrario come mostrato nelle altre risposte (Double.valueOf (someString) restituisce un doppio e Double.parseDouble (someString) restituisce un doppio).
Johann Petrak,

36
double d = Double.parseDouble(aString);

Questo dovrebbe convertire la stringa aString nella doppia d.


aString si riferisce a cosa? mi potete aiutare a spiegare di più?
TinyBelly,

2
aString è solo una stringa. Più in particolare la stringa che si desidera convertire in un numero.
Andreas Vinter-Hviid,

30

Usa new BigDecimal(string). Ciò garantirà il corretto calcolo in seguito.

Come regola generale, utilizzare sempre BigDecimalper calcoli sensibili come il denaro.

Esempio:

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

20

Devi solo analizzare i valori String usando Double

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

14

Citando ancora una volta la citazione di Robertiano, perché questa è di gran lunga la versione più versatile e adattabile alla localizzazione. Merita un post completo!

Un'altra opzione:

DecimalFormat df = new DecimalFormat(); 
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(','); 
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();



3

Questo è quello che vorrei fare

    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
}

Ad esempio, inserendo la stringa "4 55,63. 0" l'output avrà il doppio numero 45563.0


2

L'uso Double.parseDouble()senza try/catchblocco circostante può causare potenziale NumberFormatExceptionse la doppia stringa di input non è conforme a un formato valido.

Guava offre un metodo di utilità per questo che ritorna nullnel caso in cui la stringa non possa essere analizzata.

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 fase di esecuzione, viene nullassegnato un input di stringa non validovalueDouble


"restituisce 0.0 nel caso in cui la stringa non possa essere analizzata" - Javadoc non supporta tale affermazione.
Tom

@ Tom Restituisce un valore nullo Double type che può essere convertito in 0.0 double type - DYS 13 secondi fa modifica
DYS

1
Può, ma non automaticamente, e lo snippet non riesce a farlo.
Tom,

1

Utilizzato questo per convertire qualsiasi numero di stringa per raddoppiare quando è necessario int semplicemente convertire il tipo di dati da num e num2 in int; ha preso tutti i casi per ogni stringa doppia con 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

Puoi usare double.parseDouble ();

String num = "10.1";
Double x = Double.parseDouble(num);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.