Float u C

1

Float u C

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

E ovako, nov sam na forumu i mnogo me interesuju kompjuteri kompjuteri. Sad sam poceo i da ucim programiranje C. Imam samo 13 godina. Imam knjigu Programiranje na jeziku C od Augie Hansen.
Radim u programu C-Free 5.0.
Stigao sam do 3. poglavlja do racionalnih tipova sa funkcijama float i double.
Tu ima jedan primer koji ja ne razumem.

#include <stdio.h>
#include <stdlib.h>
int
main()
{
/* deklaracije podataka */
float f_pro;
double d_pro;
/* dodeli vrednost promenljivama */
f_pro = 106.11;
d_pro = -0.0000654;

/* stampaj vrednosti podataka na razne nacine */
printf("Promenljiva f_pro = %2f\n", f_pro);
printf("Promenljiva d_pro = %.101f\n", d_pro);
printf("Promenljiva f_pro = %e\n", f_pro);
printf("Promenljiva d_pro = %G\n", d_pro);

return 0;

}

Prvo sto ne razumem je zasto pise da je Promenjiva f_pro = 106.110001, a stavio sam da pise da je 106.11 i to isto vazi i za double, pise da je d_pro = -0.00006540000000000000400000000000000400000000000, a stavio sam da je -0.0000654.
Onda isto i ne razumem nista i za ove specifikatore konverzije %e i %G.

Nadam se da ste me razumeli i da cu dobiti odgovor.

Hvala unapred.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

%.101f kaze da se taj broj "zaokruzi" na 101 decimalu...
%e
"%e" is the control string used to repesent the float and double value in exponential form. For example: float f=223.30; printf("%e",f); output of above statement will be 2.23300e+02
znaci %e ti predstavlja float i double brojeve u eksponencionalnom obliku.



offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Hvala ti za ovaj odgovor, ali zasto se ono 106.11 kad se pokrene ispise 106.110001, i ako bi mogao da mi malo bolje objasnis za ovo %e.

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

u ovom slucaju eksponent ti kaze koliko nula postoji iza tog zadnjeg broja.

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Hvala ti, ali ako bi mogao i da mi kazes i za ono drugo sto ne razumem.

offline
  • Pridružio: 31 Dec 2011
  • Poruke: 109
  • Gde živiš: Novi Pazar

Program ti ispisuje 106.110001 zbog toga sto si zaboravio tacku ispred 2f\n", to jest
printf("Promenljiva f_pro = %.2f\n", f_pro);
E onda ispisuje dve decimale to jest taj broj koji zeliš 106.11.
I ja sam relativno skoro uzeo da učim C jezik, i koliko sam ja shvatio taj deo poglavlja ovo %e i %f služe za predstavljanje realnih brojeva, to jest pomoću njih kompajler čita podatke na izlazu.

mycity.rs/must-login.png

Poz Smile

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Poz druze, koju knjigu imas?
Samo jos ne razumem ovo %G.

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

%g ti je slican kao i %e samo sto za razliku od njega on ti odmah zaokruzuje na 2 decimale i ispisuje koliko nula kasnije imas (probaj da umesto printf("Promenljiva d_pro = %G\n", d_pro); stavis printf("Promenljiva d_pro = %3\n", d_pro); ili umesto printf("Promenljiva f_pro = %e\n", f_pro);
da stavis printf("Promenljiva f_pro = %g\n", f_pro); ,tako ces najlakse uociti razliku Smile )

offline
  • Pridružio: 31 Dec 2011
  • Poruke: 109
  • Gde živiš: Novi Pazar

Ja sam uzeo knjigu od Milana Čabarkape, mada imaš i ovde par zanimljivih tutoriala za C i C++

Link
pa ti vidi, procitaj i provežbaj.

Kad naučiš C mnogo će ti biti lakše da kreneš dalje na C++ i C# pa i na ostale jezike. Bitno je da tebe ovo interesuje i da si uporan, sve će posle doći na svoje ako redovno vežbaš.

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Hvala svima za pomoc, mislim da sam ukapirao da %e dodaje nule a da %G smanjuje nule.
Np.
%e, dodaje nule na kraju broja, a
%G, skida nule na pocetku broja.

Hvala svima.

Ko je trenutno na forumu
 

Ukupno su 915 korisnika na forumu :: 52 registrovanih, 7 sakrivenih i 856 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, A.R.Chafee.Jr., ALBION101, aljosa7, amaterSRB, amstel, babaroga, baza, bojank, Cirkon, cvrle312, dac, DH, DJORDJE-NO-1, Doca, Filip Marinković, GORDI, havoc995, Hektor, Insan, ivicasimo, jaeger, Kaneda, Kibice, komkom, Konda, Libertas, ljuba, madza, manda87, Marko Marković, Markoni29, mercedesamg, Mercury, Milan A. Nikolic, miodrag, mladen.zovko, Ognjen D., ostoja, pedja.st, piton, RJ, shaja1, Sibin, Snorks, tanakadzo, v0idmp3, VaRvArI 85, vladas87, voja64, VP6919, wolf431