C Programmeerimine

Kümnendtäpsuse määramine C-keeles

Kümnendtäpsuse määramine C-keeles

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:

    1. Vaikimisi ujuki täpsus
    2. Vaikimisi täpsus topelt
    3. Määra ujuki täpsus
    4. 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.

# kaasata
int 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.

# kaasata
int 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.

# kaasata
int 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.

# kaasata
int 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.

Kuidas muuta hiirekursori ja kursori suurust, värvi ja skeemi Windows 10-s
Windows 10 hiirekursor ja kursor on operatsioonisüsteemi väga olulised aspektid. Seda võib öelda ka teiste opsüsteemide kohta, nii et tegelikult pole ...
Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...
Tomb Raider for Linuxi õpetus
Shadow of the Tomb Raider on kaheteistkümnes täiendus seeria Tomb Raider - tegevus- ja seiklusmängude frantsiisile, mille on loonud Eidos Montreal. Ni...