Double precision virgul sonrası hatası

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
Yusuf AYDIN
Üye
Mesajlar: 69
Kayıt: 02 Oca 2004 05:45
Konum: Antalya

Double precision virgul sonrası hatası

Mesaj gönderen Yusuf AYDIN »

selamunaleykum

firebird 2.1 kullanıyorum.
Double precision alanına yapılan bazı rakamlarda sonuna fazladan rakamlar ilave ediyor.
Orneğin
1175.35 rakamını 1175.349999999999 olarak kayıt yapıyor.
1175.38 rakamını ise 1175.3800000000001

SQL DIALECT 3 kullanıyorum.
bununla daha önceden karşılaşan ve database içinde çözüm bulan arkadaş var mı?
Yardımcı olursanız sevinirim...
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Double precision virgul sonrası hatası

Mesaj gönderen greenegitim »

Malesef bende de bu sıkıntı vardı caritabloda bakiye 0,00 şeklinde gösterdiği halde durum alanında Borçlu gösteriyordu sebebi ise virgülden sonra baya uzun rakamlar olması idi update trigerina aşağıdaki gibi yazarak çözdüm

Kod: Tümünü seç

  NEW.borc=    trunc (NEW.borc,2);
  NEW.alacak= trunc (NEW.alacak,2);
  NEW.bakiye= trunc (NEW.bakiye,2);

Mücadele güzelleştirir!
Kullanıcı avatarı
Yusuf AYDIN
Üye
Mesajlar: 69
Kayıt: 02 Oca 2004 05:45
Konum: Antalya

Re: Double precision virgul sonrası hatası

Mesaj gönderen Yusuf AYDIN »

Teşekkür ederim ilginize..
Trunc virgulden sonraki 2 karakteri alıyor.
1175.35 rakamını trunc( ,2) ile kayıt edince 1175.34 olarak kayıt ediyor.
ama 1175.339999999 şekline kayıt ediyor.

Bu güne kadar hiç başıma gelmemişti.
İlginç bir durum
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Double precision virgul sonrası hatası

Mesaj gönderen greenegitim »

genelde trunc( ,4) olarak kullanılıyor yada alan açılırken double yerine numeric (,4) şeklinde açılıyor
Mücadele güzelleştirir!
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Double precision virgul sonrası hatası

Mesaj gönderen esistem »

Double precision yerine Decimal (15,2) yada Decimal(15,4) yaparak bundan kurtulabilirsiniz.
Cevapla