iki sayının yüzde hesaplaması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

iki sayının yüzde hesaplaması

Mesaj gönderen bobasturk »

Merhabalar,

Başlıkta görüldüğü üzere ilk okul çocuklarının bilebileceği bir soruyu sormak istiyorum (metmatiksel açıdan). excel de yapabildiğim yüzde hesaplamayı delphide yapamıyorum. bir türlü aklımda kurgulayamadığım için koda da dökemiyorum.

excel de şöyle yapıyordum =topla(b1/a1)-1 kafa durdu bunu bile hatırlayamadım bilg. office de kurulu olmayınca deneyemedim doğruluğunu ama böyle bir şeydi.

konuya geliyorum. elimde iki tane integer sayı var misalen geçen yıl 950 olay işlenmiş. bu yıl 975 olay işlenmiş bunların arasındaki farkı yüzde oranı olarak göstermek istiyorum yani yüzde şu kadar artmış veya azalmış gibi. uyguladığım kod şöyle;

Kod: Tümünü seç

dbtext32.Caption:=floattostr(strtoint(dm2.ilkizyokibqry.Fieldbyname('izyoktop1').AsString) *
                             strtoint(dm2.sonizyokibqry.fieldbyname('izyoktop2').AsString)/100);
         dbtext32.Caption:=formatfloat('0.####0',strtofloat(dbtext32.Caption));
bununla bir sonuç dönüyor ama doğruluğunu hesap makinesi ilede hesaplayamadım. liseyi nasıl bitirmişiz bilmiyorum üstüne birde işe girmişiz :oops:

ben bu query ler ile aldığım toplama sonucuna göre yüzdesini nasıl hesaplamalıyım? mantığını kafamda kurabilsem gerisi gelecek ama...

teşekkür ve saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

excel kurdum ve şöyle yaparak sonuç buldum. =topla(B1/A1-1)

yukarıdaki kodu şu şekil düzenledim

Kod: Tümünü seç

dbtext32.Caption:=floattostr(strtoint(dm2.sonizvaribqry.Fieldbyname('izvartop2').AsString) /
                             strtoint(dm2.ilkizvaribqry.fieldbyname('izvartop1').AsString)-1);
         dbtext32.Caption:=formatfloat('#.####0',strtofloat(dbtext32.Caption));
sonizvaribqry=945
ilkizvaribqry=950
toplamlarını veriyor sorgu

verdiğim kod ile sonuç -,00526
aynı değerlerin excel sonucu -0,53% şeklinde alanı yüzde oranı olarak formatlamıştım.

bu hesaplamalırın doğruluk oranı nedir yanlış yol mu izliyorum. hesabı yanlışmı? dün gündüzden beri uğraşıyorum diyebilirim.

teşekkür ve saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hocam şöyle olması lazım;

Kod: Tümünü seç

YuzdeFark := 100 * (SonSayi - IlkSayi) / IlkSayı;
Bu örnekte şu şekilde sonuçtan gidebilirsin. IlkSayi := 8; SonSayi := 10; burada 8 ile 10 arasında %25 lık (yani 2 birim fark olduğuna göre) 2 birim ilk değerin dörtte biri yada %25'i olduğuna göre matematiksel ifadesi yukarıdaki gibi olur. Sonucun negatif olması azalmayı gösterecektir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

recep ustam,

mantık olarak yol gösterdiğin ve bunu kod şeklinde de tiyo verdiğin için teşekkür ederim.

Kod: Tümünü seç

dbtext32.Caption:=floattostr(100*(strtoint(dm2.sonizvaribqry.Fieldbyname('izvartop2').AsString) -
                             strtoint(dm2.ilkizvaribqry.fieldbyname('izvartop1').AsString)/
                             dm2.ilkizvaribqry.fieldbyname('izvartop1').AsInteger));
         dbtext32.Caption:=formatfloat('#.####0',strtofloat(dbtext32.Caption));
bu şekilde beceremedim. sanırım imleç hataları yüzünden işin içinden çıkamadım bende değerleri dbtext lerden aldım ve

Kod: Tümünü seç

dbtext7.Caption:=floattostr(100*(strtoint(dbtext13.Caption)-
                     strtoint(dbtext12.Caption))/strtoint(dbtext12.Caption));
bu şekilde çözdüm.

teşekkür ve saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla