Diese drei Antworten, die im Grunde genommen nur die Antwort mit den höchsten Stimmen duplizieren, die einige Jahre zuvor veröffentlicht wurden, haben sicher viele positive Stimmen.
Bernhard Barker
Antworten:
471
Sie können verwenden Double.parseDouble(), um a Stringin a zu konvertieren double:
String text ="12.34";// example Stringdouble 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(",","."));
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.
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 =newDecimalFormat();DecimalFormatSymbols sfs =newDecimalFormatSymbols();
sfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sfs);double d = df.parse(number).doubleValue();
publicstaticdouble convertToDouble(String temp){String a = temp;//replace all commas if present with no commaString s = a.replaceAll(",","").trim();// if there are any empty spaces also take it out. String f = s.replaceAll(" ","");//now convert the string to doubledouble 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.
"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"
publicstaticdouble 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++;}elseif(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;}
Antworten:
Sie können verwenden
Double.parseDouble()
, um aString
in a zu konvertierendouble
:Für Ihren Fall sieht es so aus, als ob Sie wollen:
quelle
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.Double
statt Urtypdouble
VerwendungDouble.valueOf(String)
.Wenn Sie Probleme beim Parsen von Zeichenfolgen auf Dezimalwerte haben, müssen Sie "," in der Zahl durch "ersetzen.
quelle
Versuchen Sie Folgendes, um eine Zeichenfolge wieder in ein Double umzuwandeln
Die parseDouble-Methode erzielt den gewünschten Effekt, ebenso wie die Double.valueOf () -Methode.
quelle
Dies sollte den String aString in das Double d konvertieren.
quelle
Verwenden Sie
new BigDecimal(string)
. Dies garantiert später eine ordnungsgemäße Berechnung.Als Faustregel - immer
BigDecimal
für sensible Berechnungen wie Geld verwenden.Beispiel:
quelle
Sie müssen nur String-Werte mit Double analysieren
quelle
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:
quelle
quelle
Es gibt auch einen anderen Weg.
Double ist eine Klasse und "temp" ist eine Variable. "Nummer" ist die endgültige Nummer, die Sie suchen.
quelle
Das würde ich tun
Wenn Sie beispielsweise den String "4 55,63. 0" eingeben, wird die doppelte Nummer 45563.0 ausgegeben
quelle
Die Verwendung
Double.parseDouble()
ohne umgebendentry/catch
Block kann möglicherweiseNumberFormatException
dazu führen, dass die Eingabe-Doppelzeichenfolge nicht einem gültigen Format entspricht.Guava bietet hierfür eine Dienstprogrammmethode an, die zurückgegeben wird,
null
falls 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
null
zugewiesenvalueDouble
quelle
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"
quelle
quelle
Sie können double.parseDouble () verwenden;
quelle