Tässä artikkelissa kerrotaan, kuinka desimaalitarkkuus asetetaan C-ohjelmointikielellä. Ensin määritellään tarkkuus ja sitten tutkitaan useita esimerkkejä osoittamaan, kuinka desimaalitarkkuus asetetaan C-ohjelmoinnissa.
Desimaalitarkkuus C
Luku tyypin muuttujaa käytetään yleensä pitämään kokonaislukua ja float-tyyppistä muuttujaa pitämään reaaliluvut murto-osilla, esimerkiksi 2.449561 tai -1.0587. Tarkkuus määrittää reaalilukujen tarkkuuden ja sitä merkitään pisteellä (.) -symboli. Reaalilukujen tarkkuus tai tarkkuus ilmaistaan desimaalipilkun jälkeisellä lukumäärällä. Tarkkuus tarkoittaa siis float-luvun desimaalipilkun jälkeen mainittua lukumäärää. Esimerkiksi numero 2.449561: n tarkkuus on kuusi ja -1.058: lla on kolme tarkkuutta.
IEEE-754: n yhden tarkkuuden liukulukuesityksen mukaisesti reaaliluvun tallentamiseen on yhteensä 32 bittiä. 32 bitistä merkittävintä bittiä käytetään merkkibitinä, seuraavia 8 bittiä käytetään eksponenttina ja seuraavia 23 bittiä käytetään murto-osana.
IEEE-754-kaksoistarkkuuden liukulukuesityksen tapauksessa reaaliluvun tallentamiseen on yhteensä 64 bittiä. 64 bitistä merkittävintä bittiä käytetään merkkibitinä, seuraavia 11 bittiä käytetään eksponenttina ja seuraavia 52 bittiä käytetään murto-osana.
Reaalilukuja tulostettaessa on kuitenkin tarpeen määrittää reaaliluvun tarkkuus (toisin sanoen tarkkuus). Jos tarkkuutta ei ole määritelty, oletustarkkuus otetaan huomioon, ts.e., kuusi desimaalin tarkkuudella desimaalin tarkkuudella. Seuraavissa esimerkeissä näytetään, kuinka tarkkuus määritetään, kun tulostetaan liukulukuja C-ohjelmointikielellä.
Esimerkkejä
Nyt kun sinulla on perustiedot tarkkuudesta, katsokaamme muutama esimerkki:
-
- Oletusarkkuus kellukkeelle
- Oletustarkkuus kaksinkertaiselle
- Aseta uimurin tarkkuus
- Aseta tarkkuus kaksinkertaiselle
Esimerkki 1: Kellukkeen oletustarkkuus
Tämä esimerkki osoittaa, että oletustarkkuus on asetettu kuuteen numeroon desimaalipilkun jälkeen. Olemme alustaneet kelluvan muuttujan arvolla 2.7 ja tulosti sen ilmoittamatta tarkkuutta.
Tässä tapauksessa tarkkuuden oletusasetus varmistaa, että kuusi numeroa desimaalin jälkeen tulostetaan.
#sisältääint main ()
uimuri f = 2.7;
printf ("\ nArvon arvo f =% f \ n", f);
printf ("Kelluvan koko =% ld \ n", koko (kelluva));
paluu 0;
Esimerkki 2: Oletustarkkuus tuplalle
Tässä esimerkissä näet, että oletustarkkuus on asetettu kuuteen numeroon desimaalipilkun jälkeen kaksinkertaisen tyypin muuttujille. Olemme alustaneet kaksoismuuttujan, ts.e., d, arvolla 2.7 ja tulosti sen määrittelemättä tarkkuutta. Tässä tapauksessa tarkkuuden oletusasetus varmistaa, että kuusi numeroa desimaalin jälkeen tulostetaan.
#sisältääint main ()
kaksinkertainen d = 2.7;
printf ("\ nArvon d =% lf \ n", d) arvo;
printf ("Tuplan koko =% ld \ n", koko (kaksinkertainen));
paluu 0;
Esimerkki 3: Aseta kelluvuuden tarkkuus
Nyt näytämme sinulle, kuinka asetetaan tarkkuus kelluville arvoille. Olemme alustaneet kelluvan muuttujan, ts.e., f arvolla 2.7, ja tulosti sen erilaisilla tarkkuusasetuksilla. Kun mainitaan ”% 0.4f ”printf-käskyssä tämä osoittaa, että olemme kiinnostuneita tulostamaan neljä numeroa desimaalipilkun jälkeen.
#sisältääint main ()
uimuri f = 2.7;
/ * aseta tarkkuus kelluvalle muuttujalle * /
printf ("\ n f: n arvo (tarkkuus = 0.1) =% 0.1f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.2) =% 0.2f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.3) =% 0.3f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.4) =% 0.4f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.22) =% 0.22f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.23) =% 0.23f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.24) =% 0.24f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.25) =% 0.25f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.40) =% 0.40f \ n ", f);
printf ("Kelluvan koko =% ld \ n", koko (kelluva));
paluu 0;
Esimerkki 4: Aseta tarkkuus kaksinkertaiselle
Tässä esimerkissä näemme, kuinka kaksinkertaisten arvojen tarkkuus asetetaan. Olemme alustaneet kaksoismuuttujan, ts.e., d, arvolla 2.7 ja tulosti sen erilaisilla tarkkuusasetuksilla. Kun mainitaan ”% 0.52f ”printf-käskyssä tämä osoittaa, että olemme kiinnostuneita tulostamaan 52 numeroa desimaalipilkun jälkeen.
#sisältääint main ()
uimuri f = 2.7;
/ * aseta tarkkuus kelluvalle muuttujalle * /
printf ("\ n f: n arvo (tarkkuus = 0.1) =% 0.1f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.2) =% 0.2f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.3) =% 0.3f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.4) =% 0.4f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.22) =% 0.22f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.23) =% 0.23f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.24) =% 0.24f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.25) =% 0.25f \ n ", f);
printf ("\ n f: n arvo (tarkkuus = 0.40) =% 0.40f \ n ", f);
printf ("Kelluvan koko =% ld \ n", koko (kelluva));
paluu 0;
Johtopäätös
Tarkkuus on erittäin tärkeä tekijä todellisen luvun edustamiseksi riittävän tarkasti. C-ohjelmointikieli tarjoaa mekanismin reaaliluvun tarkkuuden tai tarkkuuden hallitsemiseksi. Emme kuitenkaan voi muuttaa reaaliluvun todellista tarkkuutta. Esimerkiksi 32-bittisen yhden tarkkuuden liukulukuluvun murto-osaa edustaa 23 bittiä, ja tämä on kiinteä; emme voi muuttaa tätä tietylle järjestelmälle. Voimme päättää, kuinka paljon tarkkuutta haluamme asettamalla halutun tarkkuuden reaaliluvulle. Jos tarvitsemme enemmän tarkkuutta, voimme aina käyttää 64-bittistä kaksitarkkaa liukuluku.