Flyttall er tall som er uttrykt ved hjelp av en desimalbrøk og en eksponent. Flyttall brukes i datamaskiner for å tilnærme og representere reelle tall.

Faktaboks

Etymologi
av engelsk floating point number

For eksempel kan tallet 139 000 000 000 skrives 0,139 · 1012, og dermed uttrykkes som flyttall ved hjelp av desimalbrøken 0,139 og eksponenten 12. Eksponenten er den potensen med grunntallet 10 som desimaltallet må multipliseres med for å få tallets faktiske verdi.

Betegnelsen flyttall kommer av at desimalpunktet (kommaet) ikke har noen fast plassering, men flyttes ettersom de forskjellige beregningsoperasjonene utføres. Dette er i motsetning til fasttall, der desimalpunktets plassering er fast.

I datamaskiner

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.

Les mer i Store norske leksikon

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.

eller registrer deg