Ada opsi terbaik yang jelas dari tiga yang Anda sarankan (ditambah satu dari komentar).
BESAR — hanya menggunakan 8 byte, tetapi BIGINT
terbesar hanya memiliki 19 angka desimal; jika Anda membagi dengan 10, nilai terbesar yang dapat Anda wakili adalah 9,22, rentang yang tidak cukup.
GANDA — hanya memiliki presisi 15–17 digit desimal; memiliki semua kelemahan yang diketahui dari aritmatika titik-mengambang.
VARCHAR — akan menggunakan 20+ byte jika Anda berurusan dengan 18 tempat desimal; akan membutuhkan konversi string↔int yang konstan; tidak dapat diurutkan; tidak dapat dibandingkan; tidak dapat ditambahkan di DB; banyak kerugian.
DESIMAL(27,18) – jika menggunakan MySQL, ini akan memakan waktu 12 byte (4 untuk setiap grup yang terdiri dari 9 digit ). Ini adalah ukuran penyimpanan yang cukup masuk akal, dan memiliki jangkauan yang cukup untuk mendukung jumlah sebesar satu miliar atau sekecil satu Wei. Itu dapat diurutkan, dibandingkan, ditambahkan, dikurangi, dll. dalam database tanpa kehilangan presisi.
Saya akan menggunakan DECIMAL(27,18)
(atau DECIMAL(36,18)
jika Anda perlu menyimpan nilai yang sangat besar) untuk menyimpan nilai uang cryptocurrency.