Apa cara terbaik untuk mengubah ganda menjadi panjang tanpa casting?
Sebagai contoh:
double d = 394.000;
long l = (new Double(d)).longValue();
System.out.println("double=" + d + ", long=" + l);
java
type-conversion
Kereta luncur
sumber
sumber
myLong == (long)(myDouble + 1)
manamyLong
persamaanmyDouble
akan dievaluasitrue
Double.longValue();
) masih berguna jika Anda memiliki nilai ganda dari hal-hal seperti daftar array seperti iniArrayList<Double>
karena Anda akan mendapatkan kesalahan yang tidak bisa dilemparkan. Saya hanya mengatakan ini untuk siapa pun yang datang ke sini dan memiliki masalah yang sedikit berbeda.Jawaban:
Dengan asumsi Anda senang memotong nol, cukup masukkan:
Ini akan lebih cepat daripada melalui kelas wrapper - dan yang lebih penting, ini lebih mudah dibaca. Sekarang, jika Anda membutuhkan pembulatan selain "selalu menuju nol" Anda akan memerlukan kode yang sedikit lebih rumit.
sumber
... Dan inilah cara pembulatan yang tidak terpotong. Terburu-buru mencarinya di Java API Manual:
sumber
Pendekatan yang disukai harus:
Dari dokumentasi Double (Java Platform SE 7) :
sumber
(new Double(d)).longValue()
secara internal hanya melakukan pemeran, jadi tidak ada alasan untuk membuat objek ganda.sumber
Perpustakaan Guava Math memiliki metode yang dirancang khusus untuk mengkonversi ganda menjadi panjang:
Anda bisa menggunakan
java.math.RoundingMode
untuk menentukan perilaku pembulatan.sumber
Jika Anda memiliki kecurigaan yang kuat bahwa GANDA sebenarnya PANJANG, dan Anda ingin
1) dapatkan pegangan pada nilai EXACT sebagai PANJANG
2) melempar kesalahan saat ini bukan PANJANG
Anda dapat mencoba sesuatu seperti ini:
Long adalah himpunan bagian dari Double, jadi Anda mungkin mendapatkan beberapa hasil aneh jika Anda tanpa sadar mencoba mengonversi Double yang berada di luar rentang Long:
sumber
Long is a subset of Double
tidak akurat. Jumlah digit signifikan untuk Long lebih besar dari Double, sehingga beberapa informasi yang dimiliki Long dapat hilang ketika dikonversi ke Double. Contoh = tio.run/…Anda ingin memiliki konversi biner seperti
sumber
Cukup dengan yang berikut ini:
sumber
Sederhananya, casting lebih efisien daripada menciptakan objek Double.
sumber