Utancımdan konuyu gizliycem gizlemeyim hadi.. #include <stdio. h> #include <stdlib. h> main "Saglik " için ne girersem gireyim eğer tamsayı çıkıyorsa rneğin 200 girersem 5.00000 çıkıyor eyw doğru ama 50 girersem 2 yerine 1.0000 çıkıyor 60 girsem bile doğru ondalık sonucu alamıyorum. Neden arkadaşlar neden oluyor neden kafamı toparlayamıyorum gece gece.. http://yigitdemirag.com

hocam edit ledim ilk mesajımı ama grmezsn şimdisaglik i int oalrak deilde double oalrak tanımlasana bi edüt: çzülmüş.

: c = (1 + (2 ( saglik / 100.0))); bi boyle yap bakalim yaşa hocam.. http://yigitdemirag.com

double lari floatla degistir. dan sonraki sayilari isleme almaz yoksa

amacın 5.0000 yerine 5.00 almak mı tam anlayamadm hocam ne istion uyukluyomda :)edit: hocam saglik ı da double oalrak tanımlasana bi başta.

: geniuss bunu yazdı: c = (1 + (2 ( saglik / 100.0))); bi boyle yap bakalim neden byle peki hocam açıklayabilir misin? 50 girdin diyelim, saglik/100 deyince ikiside int olduğunda çıkan sonuç olan 0.5 i integer olarak grmüyo tam sayı olmadığından muhtemelende 0 olarak alıyo yle işleme devam ediyo o yüzdened 1.000 çıkıyo senin cevap.

: c = (1 + (2 ( saglik / 100.0))); bi boyle yap bakalim neden byle peki hocam açıklayabilir misin? http://yigitdemirag.com

: double lari floatla degistir. dan sonraki sayilari isleme almaz yoksa aynı b. kun laciverti, yine aynı hocam.. http://yigitdemirag.com

hocam simdi, bilgisayar iki sekilde matematiksel islem yapar. bunlarin birtanesi, tamsayilar uzerinde islem yapar , digeri ise rasyonel sayilar uzerinde islem yapar . Her iki birime ulasmak iki ayri makine kodu gerektirdiginden, fpu'yu kullanicagimizi derleyiciye bildirmeliyiz ki, o da calisabilen koda bunu o sekilde aktarsin. Yani rasyonel sayilarda toplama cikarma carpma veya bolme yapicagimiz zaman fpu'yu kullansin. Bu c dilinde nasil saglanir. Isleme giren iki operanddan birtanesinin rasyonel sayi tiplerinden herhangi birisi olmasi yeterlidir, sonuc da ayni sekilde rasyonel olucaktir. . ornegin; double d;d = 100/35; yukaridaki islemde ALU kullanildigi icin islemin sonucu tamsayidir. d = 100 / 35; Burda ise fpu kullanildigi icin islemin sonucu rasyonel bi sayidir. peki tum bunlari biliyoruz, sen ne diye bu kadar yazdin ki diyosunuz sanirim :) simdi eger iki operanddan birisi rasyonel sayi iken islemin sonucu rasyonel bir sayi oluyorsa , asagidaki gibi bi islemin fpu ya isletilmesi nasil saglanir. d = 5 / (4 (3 / 2)); islem sirasi derleyici tarafindan belirlenir ve ALU veya FPUya calistirilicak kodlar ona gore uretilmeye baslanir. Asagidaki islem sirasi yukarida ALU'nun isletmesini istedigimiz su islemin ki Sonuc1 = 3 / 2 // '3 / 2' iki operandda tamsayi oldugundan sonuc tamsayi olucaktir. Sonuc2 = 4 Sonuc1 //ayni sekildeSonuc3 = 5 / Sonuc2 //ayni sekilded = Sonuc3 islemi en basindan FPUya yaptiralim. d = 5 / (4 3 / 2)); Sonuc1 = 3 / 2 // soldaki operand rasyonel oldugundan islem sonucu rasyoneldir. Sonuc2 = 4 Sonuc1 //'Sonuc1' rasyonel oldugundan Sonuc2 de rasyoneldirSonuc3 = 5 / Sonuc2 //'Sonuc2' rasyonel oldugundan Sonuc3 de rasyoneldird = Sonuc3 Yani senin isleminde asagidakilerden herhangi birisi isini gorur. c = 1 + (2 (saglik / 100.0)); c = 1 + (2 (saglik / 100)); c = 1 + (2 saglik / 100)); umarim anlatabilmisimdir :) ..

c = (1 + (2 ( saglik / 100.0))); bi boyle yap bakalim