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 €
1999olarak 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ı