Saya akan mengambil posisi sebaliknya.
FLOATadalah untuk angka perkiraan, seperti persentase, rata-rata, dll. Anda harus melakukan pemformatan saat Anda menampilkan nilai, baik dalam kode aplikasi atau menggunakan FORMAT()fungsi MySQL.
Jangan pernah menguji float_value = 1.3; ada banyak alasan mengapa itu akan gagal.
DECIMALharus digunakan untuk nilai moneter. DECIMALmenghindari pembulatan kedua saat nilai perlu dibulatkan ke dolar / sen / euro / dll. Akuntan tidak suka pecahan sen.
Implementasi MySQL DECIMALmemungkinkan 65 digit signifikan; FLOATmemberi sekitar 7 dan DOUBLEsekitar 16. 7 biasanya lebih dari cukup untuk sensor dan perhitungan ilmiah.
Adapun "persentase" - Kadang-kadang saya telah menggunakan TINYINT UNSIGNEDketika saya ingin mengkonsumsi hanya 1 byte penyimpanan dan tidak perlu banyak presisi; kadang saya menggunakan FLOAT(4 byte). Tidak ada tipe data yang disetel khusus untuk persentase. (Perhatikan juga, itu DECIMAL(2,0)tidak dapat menahan nilainya 100, jadi secara teknis Anda perlu DECIMAL(3,0).)
Atau kadang-kadang saya menggunakan nilai FLOATyang memegang antara 0 dan 1. Tapi kemudian saya harus memastikan untuk mengalikan dengan 100 sebelum menampilkan "persentase".
Lebih
Ketiga "persentase, rata-rata, rata" bau seperti mengapung, jadi itu akan menjadi pilihan pertama saya.
Satu kriteria untuk memutuskan tipe data ... Berapa banyak salinan nilai yang akan ada?
Jika Anda memiliki tabel miliar baris dengan kolom untuk persentase, pertimbangkan bahwa TINYINTakan membutuhkan 1 byte (total 1GB), tetapi FLOATakan mengambil 4 byte (total 4GB). OTOH, sebagian besar aplikasi tidak memiliki banyak baris, jadi ini mungkin tidak relevan.
Sebagai aturan 'umum', nilai "tepat" harus menggunakan beberapa bentuk INTatau DECIMAL. Hal-hal yang tidak tepat (perhitungan ilmiah, akar kuadrat, pembagian, dll) harus menggunakan FLOAT(atau DOUBLE).
Selanjutnya, format output biasanya harus dibiarkan ke ujung depan aplikasi. Artinya, meskipun "rata-rata" dapat menghitung menjadi "14.6666666 ...", layar akan menampilkan sesuatu seperti "14.7"; ini lebih bersahabat dengan manusia. Sementara itu, Anda memiliki nilai dasar untuk nanti memutuskan bahwa "15" atau "14,667" adalah format output yang disukai.
Rentang "0,00 - 100,00" dapat dilakukan dengan FLOAT dan menggunakan pemformatan output atau dengan DECIMAL(5,2)(3 byte) dengan pra-penentuan bahwa Anda akan selalu menginginkan ketepatan yang ditunjukkan .