yuvarlama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
tsamim
Üye
Mesajlar: 76
Kayıt: 19 Ağu 2004 03:08
Konum: izmir

Mesaj gönderen tsamim »

merhaba arkadaşlar ;

Bu msg yuvarlamayla ilgili buraya yeni bakacak arkadaşlar için yazıyorum.

Bende ytl olayında yani yarım kuruş olayında takılmıştım birde ytl rakamlarımın database'de (benim vt firebird double alanlardan bahsediyorum) ondalık kısmının 2 haneden fazla olmasını istemiyordum.

diğer örneklere göre highmemo arkadaşın verdiği fonksiyon çok daha kolay ve direk sonuca gidiyor diye düşünüyorum yeni bakacak arkadaşların dikkatine......
celalatak
Üye
Mesajlar: 70
Kayıt: 27 Şub 2004 12:41

Mesaj gönderen celalatak »

Matematikte yuvarlama kuralı 0,5 ile toplayıp küsurat kısmını atmaktır. Yani

1,4+0,5=1,9 oda yuvarlanırsa 1 olur.
Benzer şekilde 1,6+0,5=2,1 yuvarlama ile 2 bulursunuz.

Delphide aşağıdaki gibi kullanabilirsiniz.


Kod: Tümünü seç

floor(sayi+0.5)
Eğer para birimide kuruşlarda yuvarlama yapmak istiyorsanız

Kod: Tümünü seç

floor(para*100+0.5)/100;
0,01 ile toplarsanız hataya yol açabilir
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Neyse, şimdi arkadaşlar 0,001 ile toplama olayını yanlış anlıyorsunuz. Bu öneri benden çıktığı için açıklama yapmak istiyorum. :twisted:

Arkadaş sorusunda 1,965 gibi bir sayıyı yuvarlatmak istediğinde sayının 1,97 olması gerekirken 1,96 olarak kaldığını bunu nasıl aşacağını sordu.

Eğer işlemin bu şekilde gerçekleştiğini göz önünde bulundurursanız 0,001 ekletmenin her zaman doğru sonuç verdiğini görürsünüz. (Ben hata yaptırdığı bir örnek düşünemedim daha)

Ama daha sonradan Delphideki yuvarlamanın "Banker's Rounding" olduğu anlaşıldığı için 0,001 ekletmek hatalı sonuç verdiyor çünkü en yakın çift sayıya yuvarlanıyor.

Olay bundan ibarettir.

Kolay gelsin.
Cevapla