SORU
22 EKİM 2008, ÇARŞAMBA


Ondalık sütun - ne duyarlık ve ölçeği?depolamak para

Bir veritabanında para değerlerini depolamak için bir ondalık sütun kullanıyorum ve bugün kullanmak için ne merak ediyorum.

Sabit genişlik sözde char sütun daha verimli olduğu için, aynı decimal sütunlar için doğru olabileceğini düşündüm. ?

Ve öyle hassas ve ölçek kullanmalıyım? Hassas 24/8 düşünüyordum. Bu çok tehlikeli, yeterli ya da tamam mı?


Bunu yapmaya karar verdim:

  • Bir şamandıra gibi işlem tablo kendi içinde dönüşüm oranları (uygun olduğunda) depolamak
  • Hesap tablosu para içinde saklayın
  • İşlem tutarı DECIMAL(19,4) olacak
  • Tüm hesaplamaları bir dönüşüm oranı kullanarak yuvarlama sorunları kontrol etmeye devam ediyorum benim uygulama tarafından ele alınacaktır

Çoğunlukla referans olduğu için dönüşüm oranı için bir şamandıra bir sorun olduğunu sanmıyorum, ve bir ondalık yine de döküm olacağım.

Değerli yorumun için teşekkür ederim.

CEVAP
22 EKİM 2008, ÇARŞAMBA


Eğer bir tek beden herkese uyar arıyorsanız, DECIMAL(19, 4) popüler bir seçim (hızlı bir Google bunu gösteriyor) öneririm. Bence bu kaynaklanır eski VBA/Access/Jet, Para birimi veri türü, ilk sabit nokta, ondalık yazın dili; Decimal sadece geldi 'sürüm 1.0' tarzı (yani tam olarak uygulanmıyor) VB6/VBA6/Jet 4.0.

İçin başparmak kuralıdepolamasabit nokta ondalık değerleri aslında yuvarlama için izin gerektirir daha fazla en az bir ondalık yere saklamaktır. Bir sebep için eşleme eski Currency tip ön uç DECIMAL(19, 4) yazın arka uç olduğunu Currency sergilenen bankacılar' yuvarlama ile doğa, oysa DECIMAL(p, s) yuvarlak tarafından kesilmesi.

Fazladan bir ondalık yerde depolama için DECIMAL sağlayan özel bir yuvarlama algoritması uygulanması yerine almadan satıcı varsayılan (ve bankacılar' yuvarlama endişe verici olduğunu, en azından, bir tasarımcı bekliyor tüm değerleri biten .5 yuvarlak sıfırdan uzağa).

Evet, DECIMAL(24, 8) bana abartılı gibi geldi. En çok para dört ya da beş basamağa dedi. 8 ondalık ölçek (veya daha fazla) durumlarda biliyorumgerekli ama bu "normal" bir miktar para (ki dört ondalık) has been pro rata, ima ondalık hassas olmalıdır azaltılmış buna göre (düşünün bir kayan nokta türü gibi durumlar). Ve hiç kimse 24:) ondalık hassasiyet gerektiren o kadar para günümüzde

Ancak, tek-boyut-uyan tüm yaklaşım yerine, biraz araştırma gerekebilir. Tasarımcı veya geçerli muhasebe kuralları konusunda etki uzmana sor: GAAP, AB, vb. Hayal meyal bazı AB ülke-içi transferler beş basamağa yuvarlama için açık kurallar, bu nedenle depolama için DECIMAL(p, 6) kullanarak hatırlayın. Muhasebeciler genellikle dört ondalık basamak iyilik gibi görünüyor.


PS yuvarlama zaman doğruluk ile ciddi sorunlar var çünkü MONEY veri türü SQL Server, taşınabilirlik gibi diğer konular arasında yer Kaçının. Aaron Bertrand's blog bkz.


Microsoft ve dil tasarımcılar donanım tasarımcıları seçti çünkü Banka'nın yuvarlama [değiştir?] seçti. Örneğin Elektrik ve Elektronik Mühendisleri Enstitüsü (IEEE) standartları tutuldu. Ve donanım tasarımcıları matematikçiler tercih onu seçti. Wikipedia; tefsir için bkz: Hataları bu adı Olasılık ve Teori 1906 edition 'bilgisayarın kuralı ("bilgisayar" hesaplamaları gerçekleştiren insanlar) anlamı.'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • ShoSho

    ShoSho

    20 Ocak 2010
  • SolidWorksTutoriels

    SolidWorksTu

    14 Kasım 2013