Desimalbrøken og eksponenten lagres i datamaskinen som separate seksjoner av en blokk på enten 4 byte (enkeltpresisjon) eller 8 byte (dobbeltpresisjon). Dette gir omtrent 7 signifikante siffer for enkeltpresisjon og omtrent 16 for dobbeltpresisjon.
På grunn av at desimaltallene lagres binært i datamaskinen, med en begrenset avsatt datamengde, vil man kunne få avrundingsfeil ved operasjoner med flyttall. Man kan for eksempel oppleve at enkelte beregninger som egentlig skulle resultert i et eksakt tall, heller gir en verdi med mange desimaler som ligger ekstremt nært den forventede verdien.
a = 0.1
b = 0.2
c = a + b # Kan resultere i for eksempel 0.30000000000000004
Tall med en høy presisjon vil kunne måtte avrundes, og irrasjonale tall må tilnærmes med rasjonale tall.
Normalt er imidlertid nøyaktigheten så stor at disse feilene ikke påvirker bruken. I en del programmeringsspråk kan imidlertid bruken av likhetsoperatoren få utilsiktede resultater:
a = 0.1 + 0.2
b = 0.3
svar = (a == b) # Kan resultere i false
I stedet må man sammenligne med en toleranse på avvik:
svar = abs(a – b) < 0.00000001
I dagens maskiner brukes som oftest IEEE 754-standarden for flyttall. Her defineres datatypene som:
-
float – 32 bit og omtrent 7 signifikante siffer
-
double – 64 bit og omtrent 15–17 signifikante siffer
-
long double – vanligvis mellom 80 og 128 bit, avhengig av plattform, og omtrent 18–34 signifikante siffer
Datatypene begrenser altså det totale antallet signifikante siffer i et tall, ikke bare antall siffer etter desimalskillet. Et tall med mange siffer foran desimalskillet vil altså få mindre presisjon i desimaldelen. Dette er imidlertid en begrensning som passer med bruksområdene. Et svært stort tall vil ikke ha samme behov for desimalpresisjon som et svært lite tall.
Kommentarer
Kommentarer til artikkelen blir synlig for alle. Ikke skriv inn sensitive opplysninger, for eksempel helseopplysninger. Fagansvarlig eller redaktør svarer når de kan. Det kan ta tid før du får svar.
Du må være logget inn for å kommentere.