04 Temmuz 2014 "E-commerce türü site yapanlar için özellikle dikkat etmeleri gereken bir konu: mysql için para değerlerini nasıl bir tablo yapısında tutmalı? Kolon tipi ne olmalı?"
Uzun lafın kısası, direk DECIMAL(13,4) kullanılmalı. Literatüre göre (Generally Accepted Accounting Principles - GAAP ) kullanılması gereken kolon tipi DECIMAL(13,4) olarak belirlenmiş. Ama pratik işlemlerde ve çok büyük paralar ile oynamıyorsanız benim tavsiyem DECIMAL(10,2) olacaktır.
Peki neden Double veya Float türü degilde DECIMAL tipinde tutuyoruz?
Çünkü decimal kolonlar daha kesin hesaplanırlar, yuvarlatılmazlar. Özellikle round - sum - avg gibi komutlarda sorun çıkmaması için, küsüratına kadr düzgün hesaplayabilmek için, para değerlerini tutan koloları, Mysql Data tipi olarak DECIMAL formatında tutmalısınız, yoksa bir çok toplama - çıkartma - çarpma - bölme gibi işlemlerde bile çeşitli yuvarlama hatalarına sebeb verirsiniz ve bunları yaşadığınızda sebeblerini bulmak, debug etmek, track etmek çok zordur.
MySQL dökümanından açıklayıcı bir parça geliyor:
In MySQL, NUMERIC is implemented as DECIMAL, so the following remarks
about DECIMAL apply equally to NUMERIC.
Aklınıza takılan varsa, yorumlar bölümünü kullanabilirsiniz.
mysqlde para saklamak için mysql data tipini Decimal seçin.