ortalamayı yuvarlama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
yuluseus
Üye
Mesajlar: 5
Kayıt: 01 Nis 2006 10:19

ortalamayı yuvarlama

Mesaj gönderen yuluseus »

kolay gelsin
sorunum a ve b değişkenlerinini toplayım excel deki gibi yukarı veya aşağı yuvarlama [örnek (45,6 yı 46 ya 45,4 45 yuvarlama)]
kullandığım komut bu ort:=(a+b) div 2;
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Round kullanabilirsiniz.

Size tavsiyem başlangıç için kolay anlaşılabilir, Türkçe bir delphi kitabı edinmeniz. Ben şahsen ilk başladığımda kitabımı yanımdan hiç ayırmaz, standart delphi componentleri ile ilgili veya komut veya fonksiyonlarla ilgili kitabıma çok bakardım. Ne de olsa burası bir forum ortamı ve kitaplarda rahatça bulunabilecek türden.
Kullanıcı avatarı
HaokaH
Üye
Mesajlar: 14
Kayıt: 02 Nis 2006 06:37
Konum: Adana/C.University
İletişim:

Mesaj gönderen HaokaH »

Kod: Tümünü seç

OrtYuvarla:=Round(ort);
ProgramcIlIk; Kendini ifade edebilme yetenegidir!
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

arkadaslar round sakıncası var


2.5 i 2 yapıyor dikkatinizi cekerim!

yani

showmessage(inttostr(round(2.5)));
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

viewtopic.php?t=677&highlight=yuvarlama%2A+round
viewtopic.php?t=7964&highlight=yuvarlama%2A+round
coderlord yazdı:Problemin kaynağı ve sorunun çözümü için bir link.

http://www.festra.com/eng/tip-rounding.htm

Özetle olay şu. Delphi ta Borland Pascal zamanından gelen bir yuvarlama algoritması kullanmakta. Buna bankers rounding algoritması diyorlar.

Bu algoritma şöyle çalışıyor:

- Tam sayı kısmı tek sayı ise ve ondalıklı kısım 0.5 ise bir üst tam sayıya yuvarlıyor. (Bu bizim istediğimiz)

- Tam sayı kısmı çift ve ondalıklı kısım 0.5 ise aşağıya yuvarlıyor. (İstenmeyen)

Bu bir hata falan değil. Algoritmanın yapısından kaynaklanıyor.

Gönderdiğim SetRoundMode func'u ile bunu istediğimiz hale getirmek aslında mümkün. Arkadaşınki nasıl gelmemiş anlamadım.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

İstenen şekilde yuvarlamak için RoundTo(...) kullanılabilir :idea:
Kullanımı için F1 :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla