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...
Double precision virgul sonrası hatası
- Yusuf AYDIN
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2004 05:45
- Konum: Antalya
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Double precision virgul sonrası hatası
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!
- Yusuf AYDIN
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2004 05:45
- Konum: Antalya
Re: Double precision virgul sonrası hatası
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
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
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Double precision virgul sonrası hatası
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!
Re: Double precision virgul sonrası hatası
Double precision yerine Decimal (15,2) yada Decimal(15,4) yaparak bundan kurtulabilirsiniz.