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: 3896
  • 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: 3896
  • 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: 3896
  • 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 650 korisnika na forumu :: 16 registrovanih, 4 sakrivenih i 630 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _commandos_, bojank, BSD, dragon986, Hektor, HrcAk47, jovanamax30, krkalon, Marko Marković, mrav pesadinac, peruni, Regrut Boskica, shone34, Sr.Stat., stug, theNedjeljko