Liukulukuarvojen Käsittely
Pyyhkäise näyttääksesi valikon
Luvut eivät rajoitu kokonaislukuihin. On olemassa myös liukulukuja. C++:ssa käytetään float- ja double-tietotyyppejä niiden tallentamiseen. Tässä luvussa käsitellään float-tietotyyppiä, kun taas seuraavassa käsitellään double-tietotyyppiä ja sen eroja. Alla on esimerkki float-tietotyypin käytöstä:
float.h
1float num = 0.45;
Katsotaan nopeasti, miten liukuluvut tallennetaan muistiin.
float-tietotyyppi vie muistista 4 tavua, aivan kuten int. Tällaisen luvun muuntaminen binäärimuotoon on kuitenkin huomattavasti monimutkaisempaa:
Tässä on esimerkki siitä, miten float num = 13.45 tallennettaisiin:
Ei haittaa, jos et täysin ymmärrä, mitä tässä tapahtuu. Tärkeintä on huomata, että float-tyypin esitys jakautuu kolmeen osaan:
-
Etumerkki-osa esitetään joko plus- (
+) tai miinusmerkillä (-). Se ilmaisee, onko luku positiivinen vai negatiivinen; -
Eksponentti-osa määrittää luvun esityksen laajuuden. Mitä suurempi eksponentti, sitä laajempi arvoalue voidaan esittää.
float-tietotyypissä eksponentti vie 1 tavun (8 bittiä) muistia; -
Mantissa-osa määrittää
float-arvon tarkkuuden. Kaikkia lukuja ei voida esittää tarkasti muistissa, ja luvun tarkkuus määräytyy mantissan pituuden mukaan.float-tietotyypissä mantissan pituus on 23 bittiä.
Tämän seurauksena float-tyypillä on 7 desimaalin tarkkuus ja alue 1.2e-38 – 3.4e+38 (koskee sekä negatiivisia että positiivisia lukuja). Useimmiten alue ei ole ongelma, mutta tarkkuus voi joskus olla.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme