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: 3898
  • 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: 3898
  • 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.

[Link mogu videti samo ulogovani korisnici]

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: 3898
  • 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 1866 korisnika na forumu :: 92 registrovanih, 14 sakrivenih i 1760 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 6018 - dana 19 Dec 2025 13:41

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: -[CoA]-, 357magnum, Abebe Bikila, aca018, airsuba, ALEKSICMILE, annon, Arhiv, Armadillo, Ba4e, babaroga, Baron92, bbrasnjo3, bigbear, blue, Bo96, Boban0312, bobomicek, boromir, Borx, Bozjidar87, burevestnik, BWG, BZ, Chainsaw, Cirkon, Clouseau, DaliborVukadinovic, Dejan_vw, Dimitrise93, Djokislav, draganl, DragoslavS, ElvisP, gasazem, Giskard, Halabit, HogarStrashni, iceburn, igorkozar83, Ir, istina, Istman, Jager715510, Jakonjveliki, Jan, jarovitt, jeen yuhs, K-1A, Kajzer Soze, kalens021, komenski, Kubovac, kybonacci, lukovic, Macalone, Marija88, Marko00, metallac777, MiGac, miodrag, mkukoleca, Moldovan, Naj-Turs, nazgul75, nebkv, nuke92, Parker, pein, pera bager, picknick, Povratak1912, Qvazimodo, RajkoB, raptorsi, rovac, Samo gledam, sap, skylab1111, Smiljkovich, SOVO515, Steeeefan, tanakadzo, TheBeastOfMG, tooljan, vasa.93, VJ, Voice1, wizzardone, zmajbre, zombicar153, 800077