• 15-05-2020, 19:13:00
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    MySQL veritabanında TL parasal değerleri decimal(15,4) olarak saklamak istiyorum. Fakat örneğin 1.250.050,00 değerini nasıl post ettirmem gerek ve MySQL bunu ne şekilde saklıyor? Bu formatta kayıt yapılmasına izin vermiyor.
  • 15-05-2020, 19:38:33
    #2
    Yuvarlama hatasına kurban gidersiniz float olarak saklarsanız. Yapmanız gereken şey en küçük birim şeklinde integer olarak saklamak. Mesela 10 TL ise 1000 olarak saklayacaksınız. Uygulamanız ise bunu denormalize edip formatlayacak çekerken.

    https://en.wikipedia.org/wiki/Round-...int_arithmetic
  • 16-05-2020, 23:28:03
    #3
    Teşekkür ederim. Örnek olması için tilpark muhasebe programını inceledim. Onda da decimal kullanılmış. Decimal konusunda yuvarlama problemi ile karşılaşacağımdan bahsetmişsiniz. Tilpark'da neden decimal kullanılmış?
  • 20-05-2020, 10:36:36
    #4
    MrNone adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim. Örnek olması için tilpark muhasebe programını inceledim. Onda da decimal kullanılmış. Decimal konusunda yuvarlama problemi ile karşılaşacağımdan bahsetmişsiniz. Tilpark'da neden decimal kullanılmış?
    Yuvarlama sorunu double'da bulunmaktadır. Decimal kullanırsanız yuvarlama ile ilgili bir sorun yaşamazsınız. Bu yüzden para birimleri için decimal tercih edilir.
  • 20-05-2020, 12:46:26
    #5
    ismail02 adlı üyeden alıntı: mesajı görüntüle
    Yuvarlama sorunu double'da bulunmaktadır. Decimal kullanırsanız yuvarlama ile ilgili bir sorun yaşamazsınız. Bu yüzden para birimleri için decimal tercih edilir.
    Veritabanından parasal değeri number_format fonksiyonu ile düzgün bir şekilde çekebiliyorum. Peki veritabanına 1.250.50,10TL örneğindeki parasal değeri nasıl insert edeceğim?
  • 20-05-2020, 15:05:00
    #6
    MrNone adlı üyeden alıntı: mesajı görüntüle
    Veritabanından parasal değeri number_format fonksiyonu ile düzgün bir şekilde çekebiliyorum. Peki veritabanına 1.250.50,10TL örneğindeki parasal değeri nasıl insert edeceğim?
    Yapmanız gereken çok kompleks bir şey yok, 125050.10 olarak göndermeniz yeterli olacaktır.