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......
yuvarlama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
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.
Eğer para birimide kuruşlarda yuvarlama yapmak istiyorsanız
0,01 ile toplarsanız hataya yol açabilir
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)
Kod: Tümünü seç
floor(para*100+0.5)/100;
Merhaba,
Neyse, şimdi arkadaşlar 0,001 ile toplama olayını yanlış anlıyorsunuz. Bu öneri benden çıktığı için açıklama yapmak istiyorum.
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.
Neyse, şimdi arkadaşlar 0,001 ile toplama olayını yanlış anlıyorsunuz. Bu öneri benden çıktığı için açıklama yapmak istiyorum.

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.