Kami menggunakan double
.
* terkesiap *
Mengapa?
Karena itu dapat mewakili angka 15 digit tanpa kendala di mana titik desimal berada . Semua untuk 8 byte sangat sedikit!
Jadi itu bisa mewakili:
0.123456789012345
123456789012345.0
... dan apa pun di antaranya.
Ini berguna karena kita sedang berhadapan dengan mata uang global , dandouble
dapat menyimpan berbagai jumlah tempat desimal yang kemungkinan akan kita temui.
Satu double
bidang tunggal dapat mewakili 999.999.999.999.999dalam yen Jepang, 9.999.999.999.999,999dalam dolar AS dan bahkan 9999.999.999.99999999dalam bitcoin
Jika Anda mencoba melakukan hal yang sama dengan decimal
, Anda perludecimal(30, 15)
biaya 14 byte.
Peringatan
Tentu saja menggunakan double
bukan tanpa peringatan.
Namun, ini bukan kehilangan keakuratan karena beberapa cenderung menunjukkan. Meskipun double
itu sendiri mungkin tidak tepat secara internal ke sistem basis 10 , kita dapat membuatnya tepat dengan membulatkan nilainya kita tarik dari basis data ke tempat desimalnya yang signifikan. Jika perlu itu. (mis. Jika itu akan dikeluarkan, dan representasi basis 10 diperlukan.)
Peringatannya adalah, setiap kali kita melakukan aritmatika dengannya, kita perlu menormalkan hasilnya (dengan membulatkannya ke tempat desimal yang signifikan) sebelum:
- Melakukan perbandingan di atasnya.
- Menulisnya kembali ke database.
Peringatan jenis lain adalah, tidak seperti di decimal(m, d)
mana basis data akan mencegah program memasukkan angka dengan lebih dari m
digit, tidak ada validasi seperti itu double
. Suatu program dapat memasukkan nilai yang dimasukkan pengguna sebesar 20 digit dan akhirnya akan dicatat secara diam-diam sebagai jumlah yang tidak akurat.
deimal(10,2)
adalah apa yang saya gunakan ... Anda dapat menyesuaikan nilai tergantung pada ukuran yang diharapkan