Wie kann ich eine Stringsolche "12.34"in eine doublein Java konvertieren ?
Wie kann ich eine Stringsolche "12.34"in eine doublein Java konvertieren ?
Antworten:
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());
double total = Double.parseDouble(jlbTotal.getText());
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.
Doublestatt Urtyp doubleVerwendung Double.valueOf(String).
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(",",".") );
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.
double d = Double.parseDouble(aString);
Dies sollte den String aString in das Double d konvertieren.
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);
Sie müssen nur String-Werte mit Double analysieren
String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
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();
String double_string = "100.215";
Double double = Double.parseDouble(double_string);
Es gibt auch einen anderen Weg.
Double temp = Double.valueOf(str);
number = temp.doubleValue();
Double ist eine Klasse und "temp" ist eine Variable. "Nummer" ist die endgültige Nummer, die Sie suchen.
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
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.
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
Zur Laufzeit wird eine fehlerhafte String-Eingabe nullzugewiesenvalueDouble
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;
}
String s = "12.34";
double num = Double.valueOf(s);
Sie können double.parseDouble () verwenden;
String num = "10.1";
Double x = Double.parseDouble(num);