See artikkel näitab teile, kuidas seadistada kümnendkohtade täpsust C-programmeerimiskeeles. Kõigepealt määratleme täpsuse ja seejärel uurime mitu näidet, et näidata, kuidas seadistada kümnendkohtade täpsust C-programmeerimisel.
Koma täpsus C-s
Täisarvu muutujat kasutatakse tavaliselt täisarvu hoidmiseks ja ujuktüüpi muutujat murdosadega reaalarvude hoidmiseks, näiteks 2.449561 või -1.0587. Täpsus määrab tegelike arvude täpsuse ja seda tähistatakse punktiga (.) sümbol. Reaalarvude täpsust või täpsust tähistab kümnendkoha järel olev arv. Nii tähendab täpsus ujukarvu kümnendkoha järel mainitud numbrite arvu. Näiteks number 2.449561 on täpne kuus ja -1.058 on täpne kolm.
Vastavalt IEEE-754 ühe täpsusega ujukomaesitusele on reaalarvu salvestamiseks kokku 32 bitti. 32 bitist kasutatakse kõige olulisemat bitti märgibitina, järgmisi 8 bitti kasutatakse eksponendina ja järgmisi 23 bitti kasutatakse murru kujul.
IEEE-754 kahekordse täpsusega ujukomaesituse korral on reaalarvu salvestamiseks kokku 64 bitti. 64 bitist kasutatakse kõige olulisemat bitti märgibitina, järgmisi 11 bitti kasutatakse eksponendina ja järgmisi 52 bitti kasutatakse murru kujul.
Reaalarvude printimisel on aga vaja täpsustada reaalarvu täpsust (teisisõnu täpsust). Kui täpsust pole täpsustatud, võetakse arvesse vaiketäpsust, s.t.e., kuus komakohta pärast koma. Järgmistes näidetes näitame teile, kuidas täpsustada C-programmeerimiskeeles ujukomaarvude printimisel.
Näited
Nüüd, kui teil on täpsuse põhitõde, uurige paari näidet:
-
- Vaikimisi ujuki täpsus
- Vaikimisi täpsus topelt
- Määra ujuki täpsus
- Määra täpsus topelt
Näide 1: ujuki vaiketäpsus
See näide näitab, et vaiketäpsuseks on seatud kuus numbrit pärast koma. Oleme alustanud ujukmuutuja väärtusega 2.7 ja printis selle täpsust täpsustamata.
Sel juhul tagab vaikimisi täpsusseade, et pärast komakohta trükitakse kuus numbrit.
# kaasataint main ()
ujuk f = 2.7;
printf ("\ nVäärtus f =% f \ n", f);
printf ("Ujuki suurus =% ld \ n", suurus (ujuk));
tagastama 0;
Näide 2: Vaikimisi täpsus topelt
Selles näites näete, et vaiketäpsus on topelttüüpi muutujate jaoks kümnendkoha järel kümnendkoht. Oleme initsialiseerinud topeltmuutuja, s.t.e., d, väärtusega 2.7 ja printis selle täpsust täpsustamata. Sel juhul tagab vaikimisi täpsusseade, et pärast komakohta trükitakse kuus numbrit.
# kaasataint main ()
topelt d = 2.7;
printf ("\ nVäärtus d =% lf \ n", d);
printf ("Double of size =% ld \ n", sizeof (double) suurus);
tagastama 0;
Näide 3: Ujuki täpsuse määramine
Nüüd näitame teile, kuidas ujukväärtuste täpsust seada. Oleme alustanud ujukmuutuja, s.t.e., f, väärtusega 2.7 ja printis selle erinevate täpsusseadistustega. Kui mainime „% 0.4f ”avalduses printf näitab see, et oleme huvitatud neljakohalise komakoha järgse numbri printimisest.
# kaasataint main ()
ujuk f = 2.7;
/ * määrake ujukmuutuja täpsus * /
printf ("\ n f väärtus (täpsus = 0.1) =% 0.1f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.2) =% 0.2f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.3) =% 0.3f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.4) =% 0.4f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.22) =% 0.22f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.23) =% 0.23f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.24) =% 0.24f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.25) =% 0.25f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.40) =% 0.40f \ n ", f);
printf ("Ujuki suurus =% ld \ n", suurus (ujuk));
tagastama 0;
Näide 4: täpsuse määramine kahekordseks
Selles näites näeme, kuidas topeltväärtustele täpsust seada. Oleme algatanud topeltmuutuja, s.t.e., d, väärtusega 2.7 ja printis selle erinevate täpsusseadistustega. Kui mainime „% 0.52f ”printf-lauses näitab see, et oleme huvitatud 52-kohalise numbri kustutamisest pärast koma.
# kaasataint main ()
ujuk f = 2.7;
/ * määrake ujukmuutuja täpsus * /
printf ("\ n f väärtus (täpsus = 0.1) =% 0.1f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.2) =% 0.2f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.3) =% 0.3f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.4) =% 0.4f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.22) =% 0.22f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.23) =% 0.23f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.24) =% 0.24f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.25) =% 0.25f \ n ", f);
printf ("\ n f väärtus (täpsus = 0.40) =% 0.40f \ n ", f);
printf ("Ujuki suurus =% ld \ n", suurus (ujuk));
tagastama 0;
Järeldus
Täpsus on reaalarvu piisava täpsusega esitamiseks väga oluline tegur. C-programmeerimiskeel pakub mehhanismi reaalarvu täpsuse või täpsuse kontrollimiseks. Kuid me ei saa muuta reaalarvu tegelikku täpsust. Näiteks 32-bitise ühe täpsusega ujukomaarvu osa on esindatud 23 bitiga ja see on fikseeritud; me ei saa seda konkreetse süsteemi jaoks muuta. Kui palju täpsust soovime, saame otsustada ainult siis, kui määrame reaalarvu soovitud täpsuse. Kui vajame suuremat täpsust, võime alati kasutada 64-bitist topelttäpsust ujukoma numbrit.