[]
-0.000000
merhaba arkadaşlar.
kaynak kodu aşağıdaki şekilde olan ve buna benzer bir şekilde float içeren içerisinde çarpma bölme işlemleri gerçekleştirilen programlarda neden "-0.0000000" gibi bir sonuç verir program?
#include<stdio.h>
#include<ctype.h>
main()
{ char a,b;
int i,c=130,tok,dek;
float etki,x;
printf("toplam kredi sayisini giriniz...");
scanf("%d",&tok);
printf("dersin kredi sayısını giriniz...");
scanf("%d",&dek);
printf("dersin harf notunu giriniz...");
scanf("%c%c",&a,&b);
fflush(stdin);
a=toupper(a);
b=toupper(b);
for(i=8 ; i>=0 ; i--){
if( a+b == c)
break;
c++;}
x=4/(8*tok);
etki=dek*i*x;
printf("etki: %.2f",etki);
}
kaynak kodu aşağıdaki şekilde olan ve buna benzer bir şekilde float içeren içerisinde çarpma bölme işlemleri gerçekleştirilen programlarda neden "-0.0000000" gibi bir sonuç verir program?
#include<stdio.h>
#include<ctype.h>
main()
{ char a,b;
int i,c=130,tok,dek;
float etki,x;
printf("toplam kredi sayisini giriniz...");
scanf("%d",&tok);
printf("dersin kredi sayısını giriniz...");
scanf("%d",&dek);
printf("dersin harf notunu giriniz...");
scanf("%c%c",&a,&b);
fflush(stdin);
a=toupper(a);
b=toupper(b);
for(i=8 ; i>=0 ; i--){
if( a+b == c)
break;
c++;}
x=4/(8*tok);
etki=dek*i*x;
printf("etki: %.2f",etki);
}
koddan anlamam ama -0.0000000135 gibi bir sayıyı noktadan sonraki basamak limitinden dolayı öyle gösteriyor olabilir. kaç basamak göstereceğini değiştrebilirsen hatta sonsuz yapabilirsen tam sonucu görürsün.
- r_u_h (16.09.12 12:36:45)
yok dostum onla ilgisi yok. herhangi bir sınırlama koymadığında hepsini gösteriyor zaten. yani daha az göstermesi için bi kod yazabiliyosun. ordaki sıfırlar aslında daha çoktu. ben öyle rasgele saymadan yazdım.
- sansar111x (16.09.12 12:50:36)
x=4/(8*tok);
burada x'i hesaplarken tamamen int değerlerle hesapladığı için x'i 0 hesaplıyordur. tabi tok değeri 1/2'den küçük olmadığı sürece. tok da toplam kredi olduğuna göre 1/2'den küçük olmaz zaten. x=4./(8*tok) şeklinde değiştirirseniz işlemin float değerini hesaplar ve x'e atar. böylece x 0 olmaz.
burada x'i hesaplarken tamamen int değerlerle hesapladığı için x'i 0 hesaplıyordur. tabi tok değeri 1/2'den küçük olmadığı sürece. tok da toplam kredi olduğuna göre 1/2'den küçük olmaz zaten. x=4./(8*tok) şeklinde değiştirirseniz işlemin float değerini hesaplar ve x'e atar. böylece x 0 olmaz.
- lemmiwinks (16.09.12 13:08:20)
1