Ta članek vam bo pokazal, kako nastavite decimalno natančnost v programskem jeziku C. Najprej bomo opredelili natančnost, nato pa si bomo ogledali več primerov, da pokažemo, kako nastaviti natančnost desetikov pri programiranju C.
Decimalna natančnost v C
Spremenljivka celoštevilčnega tipa se običajno uporablja za zadrževanje celotnega števila, spremenljivka tipa float pa za shranjevanje realnih števil z delnimi deli, na primer 2.449561 ali -1.0587. Natančnost določa natančnost realnih števil in je označena s piko (.). Natančnost ali natančnost realnih števil je označena s številom števk za decimalno vejico. Torej natančnost pomeni število števk, omenjenih za decimalno vejico v številu plovcev. Na primer številka 2.449561 ima natančnost šest in -1.058 ima natančnost tri.
V skladu z IEEE-754 enojno natančno predstavitvijo s plavajočo vejico je skupno 32 bitov za shranjevanje dejanskega števila. Od 32 bitov se najpomembnejši bit uporablja kot znakovni bit, naslednjih 8 bitov se uporablja kot eksponent, naslednjih 23 bitov pa kot ulomek.
V primeru dvojno natančne predstavitve s plavajočo vejico IEEE-754 je za shranjevanje dejanskega števila skupaj 64 bitov. Od 64 bitov se najpomembnejši bit uporablja kot znakovni bit, naslednjih 11 bitov se uporablja kot eksponent, naslednjih 52 bitov pa kot ulomek.
Vendar je treba pri tiskanju realnih števil določiti natančnost (z drugimi besedami, natančnost) dejanskega števila. Če natančnost ni določena, bo upoštevana privzeta natančnost, tj.e., šest decimalnih mest za decimalno vejico. V naslednjih primerih vam bomo pokazali, kako določite natančnost pri tiskanju številk s plavajočo vejico v programskem jeziku C.
Primeri
Zdaj, ko dobro razumete natančnost, si oglejmo nekaj primerov:
-
- Privzeta natančnost za float
- Privzeta natančnost za dvojno
- Nastavite natančnost za plovec
- Nastavite natančnost za dvojno
Primer 1: Privzeta natančnost za float
Ta primer kaže, da je privzeta natančnost nastavljena na šest mest za decimalno vejico. Inicializirali smo spremenljivko float z vrednostjo 2.7 in ga natisnil, ne da bi izrecno navedel natančnost.
V tem primeru bo privzeta nastavitev natančnosti zagotovila, da se natisne šest števk za decimalno vejico.
#includeint main ()
float f = 2.7;
printf ("\ nVrednost f =% f \ n", f);
printf ("Velikost float =% ld \ n", sizeof (float));
vrnitev 0;
Primer 2: Privzeta natančnost za Double
V tem primeru boste videli, da je privzeta natančnost nastavljena na šest mest za decimalno vejico za spremenljivke dvojnega tipa. Inicializirali smo dvojno spremenljivko, tj.e., d, z vrednostjo 2.7 in ga natisnil, ne da bi določil natančnost. V tem primeru bo privzeta nastavitev natančnosti zagotovila, da se natisne šest števk za decimalno vejico.
#includeint main ()
dvojno d = 2.7;
printf ("\ nVrednost d =% lf \ n", d);
printf ("Velikost dvojnika =% ld \ n", velikost (dvojno));
vrnitev 0;
3. primer: nastavite natančnost za plovec
Zdaj vam bomo pokazali, kako nastaviti natančnost za float vrednosti. Inicializirali smo spremenljivko float, tj.e., f, z vrednostjo 2.7 in ga natisnil z različnimi natančnimi nastavitvami. Ko omenimo »% 0.4f "v izjavi printf pomeni, da nas zanima tiskanje štirih števk za decimalno vejico.
#includeint main ()
float f = 2.7;
/ * nastavi natančnost za float spremenljivko * /
printf ("\ nVrednost f (natančnost = 0.1) =% 0.1f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.2) =% 0.2f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.3) =% 0.3f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.4) =% 0.4f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.22) =% 0.22f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.23) =% 0.23f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.24) =% 0.24f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.25) =% 0.25f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.40) =% 0.40f \ n ", f);
printf ("Velikost float =% ld \ n", sizeof (float));
vrnitev 0;
4. primer: nastavite natančnost za dvojno
V tem primeru bomo videli, kako nastaviti natančnost za dvojne vrednosti. Inicializirali smo dvojno spremenljivko, tj.e., d, z vrednostjo 2.7 in ga natisnil z različnimi natančnimi nastavitvami. Ko omenimo »% 0.52f "v izjavi printf, to pomeni, da nas zanima tiskanje 52 števk za decimalno vejico.
#includeint main ()
float f = 2.7;
/ * nastavi natančnost za float spremenljivko * /
printf ("\ nVrednost f (natančnost = 0.1) =% 0.1f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.2) =% 0.2f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.3) =% 0.3f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.4) =% 0.4f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.22) =% 0.22f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.23) =% 0.23f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.24) =% 0.24f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.25) =% 0.25f \ n ", f);
printf ("\ nVrednost f (natančnost = 0.40) =% 0.40f \ n ", f);
printf ("Velikost float =% ld \ n", sizeof (float));
vrnitev 0;
Zaključek
Natančnost je zelo pomemben dejavnik za predstavitev realnega števila z ustrezno natančnostjo. Programski jezik c ponuja mehanizem za nadzor natančnosti ali natančnosti realnega števila. Vendar dejanske natančnosti dejanskega števila ne moremo spremeniti. Na primer, ulomek 32-bitnega števila s plavajočo vejico z eno natančnostjo predstavlja 23 bitov in je to fiksno; tega ne moremo spremeniti za določen sistem. Koliko natančnosti želimo, se lahko odločimo le z nastavitvijo želene natančnosti realnega števila. Če potrebujemo več natančnosti, lahko vedno uporabimo 64-bitno dvojno natančno številko s plavajočo vejico.