jadi coding saya harus double total = Double.parseDouble (string) ;?
TinyBelly
4
@TinyBelly: ya sepertinya Anda inginkan:double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34
1
@TinyBelly: Anda perlu mengekstrak bagian teks dari string yang ingin Anda parsing untuk double. Inilah salah satu cara Anda dapat melakukannya untuk kasus Anda, meskipun saya tidak dapat menjamin itu akan bekerja untuk semuanya: 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.
WhiteFang34
4
tidak disarankan menggunakan penghitungan ganda untuk harga.
Bozho
2
Bagi mereka yang terpikat di sini saat mencari hasil kelas, Doublebukan doublepenggunaan tipe primitif Double.valueOf(String).
Pshemo
48
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(",","."));
Tidak, String.valueOf (sesuatu) mengembalikan representasi String dari sesuatu: jika sesuatu adalah tipe bawaan atau jika itu adalah Objek dan itu adalah nol, jika tidak maka itu setara dengan someObject.toString (). Untuk mendapatkan Double dari sebuah String, kita harus melakukannya dengan cara sebaliknya seperti yang ditunjukkan pada jawaban lainnya (Double.valueOf (someString) mengembalikan Double, dan Double.parseDouble (someString) mengembalikan ganda).
Johann Petrak
36
double d =Double.parseDouble(aString);
Ini harus mengubah string aString menjadi d ganda.
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}
Misalnya Anda memasukkan String "4 55,63. 0" hasilnya akan menjadi angka ganda 45563.0
Penggunaan Double.parseDouble()tanpa try/catchblok di sekitarnya dapat menyebabkan potensi NumberFormatExceptionstring ganda input tidak sesuai dengan format yang valid.
Guava menawarkan metode utilitas untuk ini yang mengembalikan nullseandainya String Anda tidak dapat diuraikan.
"mengembalikan 0,0 jika String Anda tidak dapat diuraikan" - Javadoc tidak mendukung klaim itu.
Tom
@ Tom Ini mengembalikan nilai nol Jenis ganda yang dapat dikonversi menjadi 0,0 jenis ganda - DYS 13 detik yang lalu edit
DYS
1
Bisa, tetapi tidak secara otomatis dan cuplikan Anda gagal melakukannya.
Tom
1
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"
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;}
Jawaban:
Anda dapat menggunakan
Double.parseDouble()
untuk mengonversi aString
kedouble
:Untuk kasus Anda, sepertinya Anda inginkan:
sumber
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
bukandouble
penggunaan tipe primitifDouble.valueOf(String)
.Jika Anda memiliki masalah dalam mem-parsing string ke nilai desimal, Anda perlu mengganti "," dalam angka menjadi "."
sumber
Untuk mengubah string kembali menjadi ganda, coba yang berikut ini
Metode parseDouble akan mencapai efek yang diinginkan, dan begitu juga metode Double.valueOf ().
sumber
Ini harus mengubah string aString menjadi d ganda.
sumber
Gunakan
new BigDecimal(string)
. Ini akan menjamin perhitungan yang tepat nanti.Sebagai aturan praktis - selalu gunakan
BigDecimal
untuk perhitungan sensitif seperti uang.Contoh:
sumber
Anda hanya perlu mengurai nilai String menggunakan Double
sumber
Mengutip kutipan dari Robertiano di atas lagi - karena ini adalah versi adaptif yang paling fleksibel dan lokalisasi. Pantas mendapat posting penuh!
Pilihan lain:
sumber
sumber
Ada cara lain juga.
Dobel adalah kelas dan "temp" adalah variabel. "angka" adalah angka terakhir yang Anda cari.
sumber
Inilah yang akan saya lakukan
Misalnya Anda memasukkan String "4 55,63. 0" hasilnya akan menjadi angka ganda 45563.0
sumber
Penggunaan
Double.parseDouble()
tanpatry/catch
blok di sekitarnya dapat menyebabkan potensiNumberFormatException
string ganda input tidak sesuai dengan format yang valid.Guava menawarkan metode utilitas untuk ini yang mengembalikan
null
seandainya String Anda tidak dapat diuraikan.https://google.github.io/guava/releases/19.0/api/docs/com/google/common/primitive/Doubles.html#tryParse(java.lang.String)
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
Dalam runtime, input String yang salah menghasilkan
null
ditugaskan untukvalueDouble
sumber
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"
sumber
sumber
Anda dapat menggunakan double.parseDouble ();
sumber