Cum pot converti un Stringcum ar fi
"12.34"o
dublă` în Java?
Puteți utiliza Dublu.parseDouble()` pentru a converti un "String" a un "dublu":
String text = "12.34"; // example String
double value = Double.parseDouble(text);
Pentru cazul tau se pare ca vrei:
double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
Dacă aveți probleme în parsarea șir de valori zecimale, aveți nevoie pentru a înlocui "," în numărul de a "."
String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
Pentru a converti un șir înapoi într-un dublu, încercați următoarele
String s = "10.1";
Double d = Double.parseDouble(s);
La parseDouble metodă va obține efectul dorit, și așa va Dubla.valueOf() metodă.
Utilizați noua BigDecimal(string)`. Acest lucru va garanta buna calcul mai târziu.
Ca o regulă de degetul mare - utilizați întotdeauna `BigDecimal pentru sensibile, cum ar fi calcule bani.
Exemplu:
String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
Invocând citat din Robertiano de mai sus din nou - pentru că acest lucru este de departe cel mai versatil și localizare versiune de adaptare. Merită un post complet!
O altă opțiune:
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);
Aceasta este ceea ce aș face
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
}
De exemplu, de intrare String "4 55,63. 0 " producția se va dubla numărul 45563.0
Folosind Dublu.parseDouble()fără incadrand
try/catchbloc poate provoca potențial
NumberFormatException` a avut de intrare dublu șir de caractere care nu sunt conforme cu un format valid.
Guava oferă un utilitar metodă care returnează null
în cazul în care Șirul poate't fi analizat.
Dublu valueDouble = Dublu.tryParse(aPotentiallyCorruptedDoubleString); `
În execuție, un malformat Șir de intrare dă null
atribuit valueDouble
Folosit acest lucru pentru a converti orice Șir numărul să se dubleze atunci când u nevoie de int doar converti tipul de date din num și la int num2 ; a luat toate cazurile pentru orice șir dublu cu 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;
}