s.a. arkadaşlar,
showmessage(floattostr(roundto(1001.355,-2)); kodu 1001.36
showmessage(floattostr(roundto(1001.365,-2)); kodu 1001.37
showmessage(floattostr(roundto(1001.375,-2)); kodu 1001.38
AMA.........
showmessage(floattostr(roundto(1001.385,-2)); kodu 1001.39 döndürmeliyken 1001.38
showmessage(floattostr(roundto(1001.395,-2)); kodu 1001.40 döndürmeliyken 1001.39 döndürüyor..
NEDEN?
yardımlarınız için şimdiden teşekkür ederim.
roundto fonksiyonu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: roundto fonksiyonu
s.a.
kullandığın delphinin versiyonunu söylersen daha iyi olur kanısıdayım.
ben d6 ve 2006 da denedim.
sonuçlar
sırası ile 35,36,37,38,39
kolay gelsin.
kullandığın delphinin versiyonunu söylersen daha iyi olur kanısıdayım.
ben d6 ve 2006 da denedim.
sonuçlar
sırası ile 35,36,37,38,39
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: roundto fonksiyonu
a.s.
d7 kullanıyorum.
d7 kullanıyorum.
Re: roundto fonksiyonu
Roundto'nun helpine bakarsanız orada “Banker’s Rounding” diye açıklıyor nedenini.
İyi çalışmalar.
İyi çalışmalar.
Re: roundto fonksiyonu
Merhabalar
Aslına bakarsanız hem @Hakan Can arkadaşımızın hemde @aslangeri arkadaşımızın dedikleride doğru.
Bu olay benim başımada gelmişti. İki ayrı sistemde iki ayrı sonuç elde ediyorduk. Bu problemi aşmak için aşağıdaki yuvarlama sistemini kullanmayı tercih ettik.
Bu kodu yanlış hatırlamıyorsam yine forumdan bulmuştum.
Kolay gelsin..
Aslına bakarsanız hem @Hakan Can arkadaşımızın hemde @aslangeri arkadaşımızın dedikleride doğru.
Bu olay benim başımada gelmişti. İki ayrı sistemde iki ayrı sonuç elde ediyorduk. Bu problemi aşmak için aşağıdaki yuvarlama sistemini kullanmayı tercih ettik.
Kod: Tümünü seç
// Memo1.Lines.Add(FloatToStr(RoundTo(StrToFloat(Edit1.Text),-2)));
Memo1.Lines.Add(FloatToStrF((Floor(StrToFloat(Edit1.Text)*100+0.5)/100),ffNumber,12,2));
Kolay gelsin..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
Re: roundto fonksiyonu
Fahrettin Hocam yazdı:Aslında round fonksiyonu doğru çalışıyor. Fakat aldığımız matematik eğitimi dolayısıyla Round fonksiyonunun çalışma mantığını yanlış tahmin ediyoruz...
Şöyle ki Round fonksiyonu normalde en yakın tam sayıya yuvarlama yapar fakat eğer yuvarlayacağınız rakam tam olarak ortada ise yani 2.5 3.5 gibi rakamlar ise o zaman en yakın çift rakama yuvarlama yapmaktadir.
Yani
round(2.5)=2
round(3.5)=4
sonuçları gayet normaldir. Sorun hepimizin başına gelen bu fonksiyonun çalışma şeklini yanlış tahmin etmemizdir. Helpten baktığınızda şu cümleyi görmektesiniz zaten.
X is a real-type expression. Round returns an Int64 value that is the value of X rounded to the nearest whole number. If X is exactly halfway between two whole numbers, the result is always the even number.
Peki çözüm ne derseniz de ya Round fonksiyonunun bu maktığını bilerek kullanın ya da 2.5 yuvarlanınca 3 olsun diyorsaniz. RoundX isimli su fonksiyonu tanimlyip kullanın.
Kolay gelsin...Kod: Tümünü seç
function RoundX( x : Extended ) : Extended; var Rint, Rdec : Extended; begin Rint := int(x); Rdec := x - Rint ; If Rdec >= 0.5 then Result := Rint + 1 else Result := Rint; end;
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
Re: roundto fonksiyonu
RoundTo fonksiyonu banker yuvarlaması yapar. Aritmetik yuvarlama yapmak için SimpleRoundTo fonksiyonu kullanın.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)