EMZETT.
Giriş yap

Para tutarlarını programlarda doğru saklamak

Kısaca: Para asla kayan noktalı sayı (float/double) olarak değil; en küçük birimde (kuruş/sent) tam sayı olarak veya kesin bir ondalık türüyle saklanır.

Biraz daha ayrıntılı: İkili kayan noktalı sayılar birçok ondalık kesri tam olarak gösteremez. 0.1 + 0.2, çoğu dilde 0.30000000000000004 verir. Tutarlarda bu sapmalar birikir.

Ayrıntılı

  • Tam sent: 19,99 € 1999 olarak saklanır. Toplama ve karşılaştırma kesindir. Yalnızca görüntülerken 100’e böl.
  • Ondalık türler: SQL’de DECIMAL(12,2), BigDecimal (Java), Decimal (Python, C#). Onluk tabanda hesaplarlar.
  • Para birimini taşı: Tutar ve para birimi kodu (EUR, JPY …) birlikte durur. Tüm para birimlerinde iki ondalık basamak yoktur (JPY: 0, KWD: 3).
  • Yuvarlama: Yuvarlama kuralı iş tarafından belirlenmeli (ticari, banker yuvarlaması) ve yalnızca hesap zincirlerinin sonunda uygulanmalıdır. Yüzdeler ve vergiler sentin kesirlerini doğurur.
  • Bölüştürme: Bölerken (100 €‘yu 3 kişiye) bilinçli atanması gereken artık bir sent kalır.
  • Aktarım: JSON’da tutarları ondalıklı sayı olarak değil, dize veya tam sent olarak ilet.

Ayrıca bak: Kayan noktalı sayı