Bagaimana saya bisa mengubah String
seperti "12.34"
ke ganda
di Jawa?
Anda dapat menggunakan Ganda.parseDouble()
untuk mengkonversi String
ke double
:
String text = "12.34"; // example String
double value = Double.parseDouble(text);
Untuk kasus anda terlihat seperti yang anda inginkan:
double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
Jika anda memiliki masalah dalam parsing string untuk nilai desimal, anda perlu mengganti "," dalam jumlah ke "."
String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
Untuk mengkonversi string ke double, coba berikut ini
String s = "10.1";
Double d = Double.parseDouble(s);
Yang parseDouble metode akan mencapai efek yang diinginkan, dan sehingga akan berlipat Ganda.valueOf() method.
Gunakan new BigDecimal(string)
. Ini akan menjamin perhitungan yang tepat nanti.
Sebagai aturan praktis - selalu gunakan BigDecimal
untuk sensitif perhitungan seperti uang.
Contoh:
String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
Mengutip quote dari Robertiano di atas lagi - karena ini adalah jauh yang paling serbaguna dan lokalisasi versi adaptif. Layak 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);
Ini adalah apa yang saya akan 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 input String "4 55,63. 0 " output akan nomor ganda 45563.0
Menggunakan Double.parseDouble()
tanpa sekitarnya try/catch
block dapat menyebabkan potensi NumberFormatException
memiliki input ganda string tidak sesuai dengan format yang berlaku.
Jambu menawarkan utilitas metode ini yang kembali null
dalam kasus String anda dapat't dapat diurai.
Double valueDouble = Ganda.tryParse(aPotentiallyCorruptedDoubleString);
Dalam runtime, yang salah input String hasil null
ditugaskan valueDouble
Ini digunakan untuk mengkonversi String nomor ganda ketika anda membutuhkan int hanya mengkonversi tipe data dari num dan num2 untuk int ; mengambil semua kasus untuk setiap 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;
}