web-dev-qa-db-fra.com

Convertir la chaîne en double dans Java

Comment convertir une String telle que "12.34" en une double en Java?

268
TinyBelly

Vous pouvez utiliser Double.parseDouble() pour convertir un String en un double:

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

Pour ton cas, on dirait que tu veux:

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

Si vous rencontrez des problèmes lors de l'analyse de chaîne en valeurs décimales, vous devez remplacer "," dans le nombre par "."


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

Pour reconvertir une chaîne en double, essayez ce qui suit.

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

La méthode parseDouble produira l'effet souhaité, de même que la méthode Double.valueOf ().

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

Cela devrait convertir la chaîne aString en double d.

36

Utilisez new BigDecimal(string). Cela garantira un calcul correct plus tard.

En règle générale, utilisez toujours BigDecimal pour les calculs sensibles comme l'argent.

Exemple:

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

Il vous suffit de analyser les valeurs de chaîne avec Double

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

Citer la citation de Robertiano ci-dessus à nouveau - parce que c'est de loin la version la plus polyvalente et adaptable à la localisation. Cela mérite un post complet!

Une autre 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

Il y a une autre façon aussi.

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

Double est une classe et "temp" est une variable. "numéro" est le numéro final que vous recherchez.

4
Jiten

C'est ce que je ferais

    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
}

Par exemple, vous entrez la chaîne "4 55,63. 0", le nombre double en sortie sera 45563.0

3
faisalsash

L'utilisation de Double.parseDouble() sans entourer le bloc try/catch peut entraîner un potentiel NumberFormatException si la chaîne double en entrée n'était pas conforme à un format valide.

Guava propose pour cela une méthode utilitaire qui renvoie null au cas où votre chaîne ne pourrait pas être analysée.

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);

Au moment de l'exécution, une entrée String mal formée renvoie null affecté à valueDouble.

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

Utilisé pour convertir n'importe quel numéro de chaîne en double lorsque vous avez besoin d'int, convertissez simplement le type de données num et num2 en int; a pris tous les cas pour toute chaîne double avec 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