Jawaban:
Anda dapat menggunakan Double.parseDouble()
untuk mengonversi a String
ke double
:
String text = "12.34"; // example String
double value = Double.parseDouble(text);
Untuk kasus Anda, sepertinya Anda inginkan:
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.]", ""));
- ini pada dasarnya menggantikan semua karakter yang bukan angka atau .
tidak sama sekali, hanya menyisakan angka dan titik desimal untuk diuraikan.
Double
bukan double
penggunaan tipe primitif Double.valueOf(String)
.
Jika Anda memiliki masalah dalam mem-parsing string ke nilai desimal, Anda perlu mengganti "," dalam angka menjadi "."
String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
Untuk mengubah string kembali menjadi ganda, coba yang berikut ini
String s = "10.1";
Double d = Double.parseDouble(s);
Metode parseDouble akan mencapai efek yang diinginkan, dan begitu juga metode Double.valueOf ().
double d = Double.parseDouble(aString);
Ini harus mengubah string aString menjadi d ganda.
Gunakan new BigDecimal(string)
. Ini akan menjamin perhitungan yang tepat nanti.
Sebagai aturan praktis - selalu gunakan BigDecimal
untuk perhitungan sensitif seperti uang.
Contoh:
String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
Anda hanya perlu mengurai nilai String menggunakan Double
String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
Mengutip kutipan dari Robertiano di atas lagi - karena ini adalah versi adaptif yang paling fleksibel dan lokalisasi. Pantas mendapat posting penuh!
Pilihan lain:
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);
Ada cara lain juga.
Double temp = Double.valueOf(str);
number = temp.doubleValue();
Dobel adalah kelas dan "temp" adalah variabel. "angka" adalah angka terakhir yang Anda cari.
Inilah yang akan saya lakukan
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
}
Misalnya Anda memasukkan String "4 55,63. 0" hasilnya akan menjadi angka ganda 45563.0
Penggunaan Double.parseDouble()
tanpa try/catch
blok di sekitarnya dapat menyebabkan potensi NumberFormatException
string ganda input tidak sesuai dengan format yang valid.
Guava menawarkan metode utilitas untuk ini yang mengembalikan null
seandainya String Anda tidak dapat diuraikan.
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
Dalam runtime, input String yang salah menghasilkan null
ditugaskan untukvalueDouble
Digunakan ini untuk mengubah nomor String menjadi dua kali lipat ketika Anda perlu int cukup mengkonversi tipe data dari num dan num2 ke int; mengambil semua case untuk string ganda dengan 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);
Anda dapat menggunakan double.parseDouble ();
String num = "10.1";
Double x = Double.parseDouble(num);