Réponses:
Vous pouvez utiliser Double.parseDouble()
pour convertir un String
en un double
:
String text = "12.34"; // example String
double value = Double.parseDouble(text);
Pour votre cas, il semble que vous souhaitiez:
double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
double total = Double.parseDouble(jlbTotal.getText());
double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));
- cela remplace essentiellement tous les caractères qui ne sont pas un nombre ou .
rien, ne laissant que le nombre et le point décimal à analyser.
Double
au lieu de l' double
utilisation du type primitif Double.valueOf(String)
.
Si vous rencontrez des problèmes lors de l'analyse de la chaîne en valeurs décimales, vous devez remplacer "," dans le nombre par "."
String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
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é, tout comme la méthode Double.valueOf ().
double d = Double.parseDouble(aString);
Cela devrait convertir la chaîne aString en double d.
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);
Vous devez uniquement analyser les valeurs de chaîne à l'aide de Double
String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
Citant à nouveau la citation de Robertiano ci-dessus - car il s'agit de loin de la version adaptative la plus polyvalente et la plus adaptée à la localisation. Il mérite un article complet!
Une autre option:
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();
String double_string = "100.215";
Double double = Double.parseDouble(double_string);
Il y a aussi une autre façon.
Double temp = Double.valueOf(str);
number = temp.doubleValue();
Double est une classe et "temp" est une variable. "numéro" est le dernier numéro que vous recherchez.
Voilà 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", la sortie sera le double numéro 45563.0
L'utilisation Double.parseDouble()
sans try/catch
bloc environnant peut entraîner un potentiel NumberFormatException
si la double chaîne d'entrée n'était pas conforme à un format valide.
Guava propose une méthode utilitaire pour cela qui revient null
au cas où votre chaîne ne pourrait pas être analysée.
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
Dans l' exécution, une entrée de chaîne rendements malformés null
affecté àvalueDouble
Utilisé pour convertir n'importe quel nombre de chaînes en double lorsque vous avez besoin d'int convertir simplement le type de données de num et num2 en int; a pris tous les cas pour tout double de chaîne 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;
}
String s = "12.34";
double num = Double.valueOf(s);
Vous pouvez utiliser double.parseDouble ();
String num = "10.1";
Double x = Double.parseDouble(num);