Mengkonversi ganda menjadi string

202

Saya tidak yakin apakah itu saya atau apa, tetapi saya mengalami masalah dalam mengubah dobel menjadi string.

ini kode saya:

double total = 44;
String total2 = Double.toString(total);

Apakah saya melakukan sesuatu yang salah atau saya kehilangan langkah di sini.

Saya mendapatkan kesalahan NumberFormatExceptionsaat mencoba mengonversikan ini.

totalCost.setOnTouchListener(new OnTouchListener() {
  public boolean onTouch(View v, MotionEvent event) {
    try {
      double priceG = Double.parseDouble(priceGal.getText().toString());
      double valG = Double.parseDouble(volGal.toString());
      double total = priceG * valG;
      String tot = new Double(total).toString();
      totalCost.setText(tot);
    } catch(Exception e) {
      Log.e("text", e.toString());
    }

    return false;
  }         
});

Saya mencoba melakukan ini di onTouchListener. Saya akan mengirim lebih banyak kode, pada dasarnya ketika pengguna menyentuh kotak edittext saya ingin informasi untuk menghitung mengisi kotak edittext.

Brandon Wilson
sumber
4
Tampak baik bagi saya, masalah apa yang Anda temui?
MByD
2
apakah itu kode nyata yang Anda jalankan? garis-garis itu bekerja dengan sempurna.
mcabral
1
Double.toString (dobel) bahkan tidak bisa melempar NumberFormatException - apakah Anda yakin pengecualian tidak dilemparkan dari tempat lain?
Random832
1
Pasti ada sesuatu yang lain, ini seharusnya bekerja dengan baik. ideone.com/btGrv
Kevin
1
Tampilkan stacktrace dan seluruh kode
Bozho

Jawaban:

452
double total = 44;
String total2 = String.valueOf(total);

Ini akan mengkonversi ganda ke String

Bhavit S. Sengar
sumber
22
memiliki yang berikut dalam pikiran jika total = 1234567890123456 maka String menjadi "1.234567890123456E15" yang sangat sering tidak seperti yang Anda inginkan
user1735824
6
ada solusi untuk yang di atas?
Prashanth Debbadwar
6
@ PrashanthDebbadwar Ya: NumberFormat fmt = NumberFormat.getInstance(); fmt.setGroupingUsed(false); fmt.setMaximumIntegerDigits(999); fmt.setMaximumFractionDigits(999);lalu gunakantotal2 = fmt.format(total)
Andreas
Ini panggilan internal Double.toString(). Tidak yakin bagaimana ini menjawab pertanyaan.
shmosel
24

Menggunakan Double.toString (), jika jumlahnya terlalu kecil atau terlalu besar, Anda akan mendapatkan notasi ilmiah seperti ini: 3.4875546345347673E-6. Ada beberapa cara untuk lebih mengontrol format string keluaran.

double num = 0.000074635638;
// use Double.toString()
System.out.println(Double.toString(num));
// result: 7.4635638E-5

// use String.format
System.out.println(String.format ("%f", num));
// result: 0.000075
System.out.println(String.format ("%.9f", num));
// result: 0.000074636

// use DecimalFormat
DecimalFormat decimalFormat = new DecimalFormat("#,##0.000000");
String numberAsString = decimalFormat.format(num);
System.out.println(numberAsString);
// result: 0.000075

Gunakan String.format () akan menjadi cara mudah yang terbaik.

Nicholas Lu
sumber
14

Kode ini mengkompilasi dan berfungsi untuk saya. Mengkonversi ganda menjadi string menggunakan panggilan yang Anda coba.

public class TestDouble {

    public static void main(String[] args) {
        double total = 44;
        String total2 = Double.toString(total);

        System.out.println("Double is " + total2);
    }
}

Saya bingung dengan Anda melihat NumberFormatException. Lihatlah jejak tumpukan. Saya kira Anda memiliki kode lain yang tidak Anda perlihatkan dalam contoh Anda yang menyebabkan pengecualian itu dibuang.

ditkin
sumber
Saya bingung dengan Anda melihat NumberFormatException. Lihatlah jejak tumpukan. Saya kira Anda memiliki kode lain yang tidak Anda perlihatkan dalam contoh Anda yang menyebabkan pengecualian itu dibuang.
ditkin
1
Begitu juga kode OP. Tidak ada masalah di sini untuk diselesaikan.
Brian Roach
mungkin, saya mencoba melakukan ini di onTouchListener. Saya akan mengirim lebih banyak kode, pada dasarnya ketika pengguna menyentuh kotak edittext saya ingin informasi untuk menghitung mengisi kotak edittext.
Brandon Wilson
6

Pengecualian mungkin berasal dari panggilan parseDouble (). Periksa bahwa nilai yang diberikan untuk fungsi itu benar-benar mencerminkan ganda.

Stephan
sumber
3
double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

berhasil. harus berulang.

agon
sumber
3

Kotlin

Anda dapat menggunakan .toStringlangsung pada semua tipe data di kotlin, seperti

val d : Double = 100.00
val string : String = d.toString()
Khemraj
sumber
1
double total = 44;
String total2= new Double(total).toString();

kode ini berfungsi

olyanren
sumber
3
Double.toString()panggilan panggilan String.valueOf(double)mana Double.toString(double). Gila, kan?
corsiKa
Begitu juga kode OP. Tidak ada masalah di sini untuk diselesaikan.
Brian Roach
2
@Muhammed - Kemungkinan ?? Itu yang dilakukannya
Brian Roach
2
@Muhammed baik, Anda membuat objek hanya untuk mendapatkan nilai String-nya. Jika ini ada dalam semacam lingkaran, Anda bisa mengalami banyak overhead tambahan (tidak perlu). Saya bukan penggemar optimisasi prematur, tetapi saya penggemar menghindari kekurangan yang jelas.
corsiKa
1
@ Brian okey saya mengerti :) terima kasih. Anda benar, begitu juga glowcoder
olyanren
1
double priceG = Double.parseDouble(priceGal.getText().toString());
double valG = Double.parseDouble(volGal.toString());

Salah satunya adalah melempar pengecualian. Anda perlu menambahkan beberapa penebangan / pencetakan untuk melihat apa yang ada di dalam volGaldan priceGal- bukan itu yang Anda pikirkan.

Brian Roach
sumber
Saya mengubah total menjadi angka keras seperti 44 dan itu masih memberi saya kesalahan.
Brandon Wilson
apa "total"? Cuplikan kode asli Anda tidak dapat membuang pengecualian itu. Dua panggilan yang saya tunjukkan di atas dapat. Salah satu dari Anda Stringbukan representasi yang valid dari doubleitu sebabnya Anda mendapatkan pengecualian itu.
Brian Roach
Untuk lebih jelas; Double.toString(total); tidak bisa melempar pengecualian. Pernah. . Anda mengubah itu new Double(total).toString();yang juga tidak bisa dan jika Anda melihat jawaban di sini yang telah ditolak itu bukan sesuatu yang ingin Anda lakukan.
Brian Roach
ok saya mengerti itu berubah. Saya memindahkan sedikit kode keluar dari ontouchlistener dan bekerja dengan baik. tetapi ketika itu ada di ontouchlistener itu melempar kesalahan. Saya mencoba melakukan ini di onTouchListener. Saya akan mengirim lebih banyak kode, pada dasarnya ketika pengguna menyentuh kotak edittext saya ingin informasi untuk menghitung mengisi kotak edittext.
Brandon Wilson
1

double.toString()harus bekerja. Bukan tipe variabel Double, tetapi variabel itu sendiri double.

Matt F.
sumber
Anda harus mempertimbangkan bahwa kadang-kadang akan mengembalikan nomor dengan notasi E ilmiah seperti -2.23561E5
Augustas
0

Cukup gunakan yang berikut ini:

doublevalue+""; 

Ini akan bekerja untuk semua tipe data.

Contoh:

Double dd=10.09;
String ss=dd+"";
Rahul Purohit
sumber
7
Kebiasaan yang sangat buruk untuk merangkai dengan menambahkan ke String kosong. Gunakan fungsi JDK khusus sebagai gantinya
StackHola
2
@ Michael.P mengapa ini buruk?
gab06
Saya telah melakukan ini untuk semua waktu saya sebagai programmer java lol.
gab06
1
Kecuali jika ada beberapa optimasi waktu kompilasi yang sedang dimainkan, itu akan memanggil metode konstruktor dan penambahan tambahan.
dsmith
1
Selalu gunakan String.valueOf (dd) sebagai gantinya. Ini juga akan berfungsi untuk semua tipe data.
BladeCoder
0

Gunakan StringBuilderkelas, seperti:

StringBuilder meme = new StringBuilder(" ");

// Convert and append your double variable
meme.append(String.valueOf(doubleVariable));

// Convert string builder to string
jTextField9.setText(meme.toString());

Anda akan mendapatkan hasil yang diinginkan.

abhishek sheregar
sumber
0

Bagaimana ketika Anda melakukan

totalCost.setText(tot);

Anda lakukan saja

totalCost.setText( "" + total );

Di mana "" + <variabel> akan mengubahnya menjadi string secara otomatis

Francisco Azevedo
sumber
0

Info Lengkap

Anda dapat menggunakan String.valueOf () untuk float, double, int, boolean dll.

double d = 0;
float f = 0;
int i = 0;
short i1 = 0;
char c = 0;
boolean bool = false;
char[] chars = {};
Object obj = new Object();


String.valueOf(d);
String.valueOf(i);
String.valueOf(i1);
String.valueOf(f);
String.valueOf(c);
String.valueOf(chars);
String.valueOf(bool);
String.valueOf(obj);
Khemraj
sumber
0

Ada tiga cara untuk mengkonversi ganda ke String .

  1. Double.toString (d)
  2. String.valueOf (d)
  3. "" + d

    DoubleToString kelas publik {

    public static void main(String[] args) {
        double d = 122;
        System.out.println(Double.toString(d));
        System.out.println(String.valueOf(d));
        System.out.println(""+d);
    
    }

    }

String untuk menggandakan

  1. Double.parseDouble (str);
Neeraj Gahlawat
sumber