Ya saya suka MONEY! Ini satu byte lebih murah daripada DECIMAL, dan komputasi berkinerja lebih cepat karena (di bawah penutup) operasi penambahan dan pengurangan pada dasarnya operasi integer. Contoh @ SQLMenace — yang merupakan peringatan besar bagi yang tidak sadar — bisa juga diterapkan pada INTegers, di mana hasilnya akan nol. Tapi itu bukan alasan untuk tidak menggunakan bilangan bulat— jika perlu .
Jadi, sangat 'aman' dan tepat untuk digunakan MONEYketika apa yang Anda hadapi adalah MONEYdan menggunakannya sesuai dengan aturan matematika yang diikuti (sama sepertiINT eger).
Apakah lebih baik jika SQL Server mempromosikan pembagian dan perkalian dari MONEYmenjadi DECIMALs (atau FLOATs?) - mungkin, tetapi mereka tidak memilih untuk melakukan ini; mereka juga tidak memilih untuk mempromosikan INTeger FLOATketika membaginya.
MONEYtidak memiliki masalah presisi; bahwaDECIMAL dapat memiliki tipe perantara yang lebih besar yang digunakan selama perhitungan hanyalah 'fitur' dari penggunaan tipe itu (dan saya tidak benar-benar yakin seberapa jauh 'fitur' itu meluas).
Untuk menjawab pertanyaan spesifik, "alasan kuat"? Nah, jika Anda ingin kinerja maksimum absolut di suatu SUM(x)tempat xbisa jadi DECIMALatau MONEY, makaMONEY akan memiliki keunggulan.
Juga, jangan lupa itu sepupu yang lebih kecil, SMALLMONEY—hanya 4 byte, tapi maks214,748.3647 — yang cukup kecil untuk uangnya — dan karenanya sering kali tidak cocok.
Untuk membuktikan titik sekitar menggunakan tipe perantara yang lebih besar, jika Anda menetapkan perantara secara eksplisit ke variabel, DECIMALmenderita masalah yang sama:
declare @a decimal(19,4)
declare @b decimal(19,4)
declare @c decimal(19,4)
declare @d decimal(19,4)
select @a = 100, @b = 339, @c = 10000
set @d = @a/@b
set @d = @d*@c
select @d
Menghasilkan 2950.0000(oke, jadi setidaknya DECIMALbulat daripada MONEYterpotong — sama seperti integer.)
DECIMAL(19, 4)adalah pilihan yang populer periksa ini juga periksa di sini Format Mata Uang Dunia untuk memutuskan berapa banyak tempat desimal yang digunakan, semoga membantu.