Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MSSQL e kaydettiğimde eklenen küsürat
#1
Mssql field -> SLAMOUNT (Float)
Info1, Info2: Double
Amount, FAmount: Double

Info1 := 300
Info2 := 0,3

Amount := 0,1

FAmount := Amount * (Inof1 / Info2)

Sonuç: FAmount = 100

Update xxxtablom Set SLAMOUNT=FAmount Where (Referans=xxx)

Veritabanındaki alana kaydedilen : 100,00000000000001

haliyle bu durum 100,00000000000001 > 100 gibi bir karşılaştırmada sorun yaratıyor

bunu neden yaptığı konusunda bilgi verebilecek arkadaşlara şimdiden teşekkür ederim.
Cevapla
#2
Merhaba.

Parasal ve hassas hesaplamalar için Float/Double yerine DECIMAL/NUMERIC kullanmak daha doğru bir yaklaşımdır. Bu tipler ondalık değerleri binary yerine decimal olarak sakladıkları için bu tür sorunlar yaşanmaz.

Hesaplamalarınızda:
0,1 ve 0,3 gibi sayılar binary sistemde sonsuz basamaklı sayılardır (tıpkı 1/3'ün decimal sistemde 0,333... olması gibi)
Bu değerlerle yapılan işlemler sırasında küçük yuvarlama hataları birikir.
Sonuç olarak 100 yerine 100,00000000000001 gibi bir değer elde edersiniz.
Cevapla
#3
Önemli olan ilk 8 basamaktı bu yüzden kaydetme ve güncelleme sql leri içinde Round(FAmount, 8) kullandım, bu şekilde veritabanına normal şekilde kaydettirdi şimdilik bu şekilde bu sorunumu aştım.
Teşekkürler
Cevapla
#4
(23-10-2025, Saat: 15:51)nevzatc Adlı Kullanıcıdan Alıntı: Önemli olan ilk 8 basamaktı bu yüzden kaydetme ve güncelleme sql leri içinde Round(FAmount, 8) kullandım, bu şekilde veritabanına normal şekilde kaydettirdi şimdilik bu şekilde bu sorunumu aştım.
Teşekkürler

Sorunun çözülmesine sevindim. Bize de fikir oldu Smile
İyi çalışmalar.
Cevapla
#5
(23-10-2025, Saat: 16:21)kajmerantime Adlı Kullanıcıdan Alıntı:
(23-10-2025, Saat: 15:51)nevzatc Adlı Kullanıcıdan Alıntı: Önemli olan ilk 8 basamaktı bu yüzden kaydetme ve güncelleme sql leri içinde Round(FAmount, 8) kullandım, bu şekilde veritabanına normal şekilde kaydettirdi şimdilik bu şekilde bu sorunumu aştım.
Teşekkürler

Sorunun çözülmesine sevindim. Bize de fikir oldu Smile
İyi çalışmalar.

Sağ olun size de iyi çalışmalar.  Shy
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MSSQL Kayıt yöntemi nevzatc 2 611 16-12-2024, Saat: 17:40
Son Yorum: mustafaozpinar
  baska programa eklenen formdaki editlerin click eventleri gorunmuyor. sadikacar60 3 695 05-05-2024, Saat: 12:37
Son Yorum: mrmarman
  delphi mssql UPDATE yunusemre 9 4.212 16-05-2022, Saat: 14:25
Son Yorum: forumcuali
  delphi mssql toplama yunusemre 13 4.795 30-04-2022, Saat: 23:37
Son Yorum: dilanorkan
  MsSQL Hata ikurt07 3 1.335 30-09-2021, Saat: 14:23
Son Yorum: ikurt07



Konuyu Okuyanlar: 1 Ziyaretçi