Bagaimana cara mengubah BigDecimal ke Double di Java?


112

Bagaimana kita mengubahnya BigDecimalmenjadi Doubledi java? Saya memiliki persyaratan di mana kami harus menggunakan Double sebagai argumen tetapi kami mendapatkan BigDecimaljadi saya harus mengubahnya BigDecimalmenjadi Double.


10
Bagaimana dengannew BigDecimal(2).doubleValue()
Matthias

6
Selalu Baca dokumentasi sebelum mengajukan pertanyaan. Anda akan sering menemukan bahwa pertanyaan Anda telah terjawab. Lihat doubleValue(). (Petunjuk: untuk menemukan dokumentasi untuk kelas tertentu, cukup cari nama kelas di google, diikuti dengan java. Misalnya, untuk menemukan dokumentasi ini, saya mencari "BigDecimal Java")
Justin

1
"Saya memiliki persyaratan di mana kita harus menggunakan Double sebagai argumen" Dapatkan persyaratan diubah. Tidak ada gunanya menggunakan BigDecimalsama sekali kecuali Anda menggunakannya dari ujung ke ujung. Persyaratan ini mengganggu akurasi; dapat membahayakan kepatuhan terhadap peraturan; dan mungkin merupakan kelalaian yang dapat ditindaklanjuti.
Marquis dari Lorne

Mengapa Anda menggunakan Doubledan tidak double. Apakah ini bidang yang bisa null?
Peter Lawrey

@EJP Menggunakan doubletidak terlalu buruk, tetapi karena memiliki 15+ digit akurasi representasi yang lebih dari yang dibutuhkan sebagian besar program, tetapi saya setuju tidak ada gunanya menggunakan BigDecimal beberapa kali karena Anda lebih cenderung menambahkan bug / kompleksitas.
Peter Lawrey

Jawaban:


225

Anda perlu menggunakan doubleValue()metode untuk mendapatkan nilai ganda dari objek BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want

Hai, saya menggunakan sama, Tetapi masalahnya adalah kedua anser berbeda keluaran desimal saya adalah 13555261857.79 dan ketika diubah menjadi dua kali lipatnya 1.355526185779E10 .. Bagaimana cara mendapatkan keluaran yang sama setelah mengubah desimal menjadi ganda
user13926345

@ user13926345 - Keduanya adalah nilai yang sama. Hanya saja keluaran pertama adalah representasi normal dari nilai dan yang lainnya adalah representasi ilmiah .
SudoRahul

35

Anda dapat mengonversi BigDecimalmenjadi doublemenggunakan .doubleValue(). Tapi percayalah, jangan gunakan jika Anda memiliki manipulasi mata uang. Ini harus selalu dilakukan pada BigDecimalobjek secara langsung. Kehilangan presisi dalam kalkulasi ini adalah masalah waktu besar dalam kalkulasi terkait mata uang.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.