Taksitlendirmede küsürat yuvarlaması mantığı..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Taksitlendirmede küsürat yuvarlaması mantığı..

Mesaj gönderen aLonE CoDeR »

Merhaba.
Kaç gündür garip bir nedenden algılama ve kurgulama sorunu yaşıyorum, basit bir şeyin mantığını kuramadım, sorma gereği duydum..

Taksitlendirme işleminde küsüratları yuvarlama seçeneğimiz var combodan seçilen, şöyle ki;

Kod: Tümünü seç

0.01
0.10
1.00
10.00
100.00
Seçilen küsürat basamağına göre yuvarlama yapılıp atılan rakamlar toplanarak ilk ya da son taksite bindirilecek...Örneğin taksit miktari 53,41 ve ilk item seçiliyse sadece son rakamı yuvarlayıp 53,40 yapacak ve artan rakamları belirlediğim aya bindirecek..Denediğim yöntemlerden istediğim sonucu alamadım..

Fikirleriniz için şimdiden teşekkürler..
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Örnekleri biraz daha açabilir misiniz?
Mesela 53,41 53,40 olmuş da 53,75 olunca istediğiniz 53,74 mü yoksa 53,70 midir?
Diğer item lerle de ilgili örnek verirseniz belki yardımcı olabiliriz.

Kolay gelsin.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Öncelikle ilginiz için teşekkürler..
Post ettikten sonra diğerlerine örnek vermediğimi farkettim, hoşgörünüz..

Aşağı ya da yukarı yuvarlama farketmez (biz aşağı yuvarlamayı baz alalım)..53,41 ya da 53,75 için ilk item seçildiyse 53,40, 53,70 olmalı..İkinci item için (aynı örnek için); 53,00 olmalı ikisi de..Üçüncü item için; 50.00 olmalı...Ve tabii atılan küsüratlar ilk ya da son aya eklenebilmeli..Bu atılan küsüratları eklemede sorun yok, asıl tıkandığım nokta ilgili iteme göre yuvarlamada kullanılacak en stabil çözüm..String parçalama fonksiyonlarıyla bir şeyler yazdım ancak çok amiyane oldu..

İlginiz için teşekkürler..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
amaç yuvarladığın rakamların toplamını bulmaksa sana basit bir yol önereyim.
taksitlerin hepsini yuvarladın. aşağı yukarı farketmeez. Sonuçta bi fark oluştur. Bu farkı bulmak için taksitlerin hepsini topla sonucu ana para ile karşılaştır. aradaki farkı da ilk veya son taksite bindir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

a.s.
Sayın @aslangeri, aradaki farkı bulabiliyorum sorun yok, asıl sıkıntı combodan seçilen iteme göre en stabil yuvarlama fonksiyonunu oluşturmak..
İlginiz için teşekkürler..
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
yuvarlama işlemini nasıl yapıyorsunuz?
Kullandığınız funtionun yazarsanız belki sorunu kaynağından çözmenize yardımcı olabiliriz.
Volkan KAMADAN
www.polisoft.com.tr
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Sayın @vkadaman;

Öncelikle ilginiz için teşekkür ederim.Yuvarlama fonksiyonu kullanmıyorum zira burada yapılacak yuvarlamayı kullanıcı kendisi belirleyecek ve buna bağlı birkaç işlem daha peşinden geliyor..Burada hassasiyet söz konusu olduğu için fikrimce (ya da son günlerdeki kurgu sıkıntısından..) herhangi bir yuvarlama fonksiyonu kullanmayı tercih etmedim..
Tekrar teşekkürler...
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
comboboxtaki değerlerin sadece ilk mesajınızdaki değerler için söylüyorum. Aşağıdaki komut inşallah istediğinizi yapıyordur.
Ben denedim normal çıkıyordu. Combo box taki değerleri sırayla seçip button1 e basıyordum. İstediğiniz değerleri veriyordu.

Kod: Tümünü seç

Procedure tform1.button1click(sender:tobject);

var 
a:double;
basamak:integer;
    begin
        setroundmod(rmTruncate);
         basamak:=length(floattostr(strtofloat(combobox1.text)*100));
         a:=roundto(53.75,basamak-2);
         showmessage(floattostr(a));
end;
Başka yerden yazdığım için copy paste yapmadım. Syntax hatası olabilir.
Kolay gelsin.

*** uses kısmına math ekleyin.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

İlginiz için çok teşekkür ederim..Kodlar genel olarak sorunu çözdü..
Kolay gelsin..
Cevapla