Flydende tal

(eller: floating point number, kommatal med flydende komma).

Fra regning og matematik kendes decimaltal, også kaldet kommatal eller reelle tal (real numbers). De bruges overalt, hvor heltallige værdier ikke kan benyttes, f.eks. i ingeniørmæssige beregninger, i statistik og i fysikken. Reelle tal har i datalogisk sammenhæng en ubehagelig egenskab: ikke alene er talområdet ubegrænset, men der findes også uendeligt mange tal mellem to vilkårlige reelle tal, således at værdier kan angives med vilkårlig finhed. Det antal cifre, en given fysisk størrelse har, er i princippet ubegrænset. I en digital computer må antallet af bit, der bruges til at repræsentere en reel værdi, naturligvis være begrænset og have en praktisk størrelse. Heraf følger, at computerens flydende tal kun kan være en tilnærmelse til de reelle tal, og at der allerede ved indlæsningen af data kan optræde en fejl (tænk på, hvorledes 1/3 angives som decimalt kommatal - der er principielt uendeligt mange decimaler).

Flydende tal er en datatype, som i højere grad end heltal og tal med fast komma (se fixed point) kan anvendes i alle beregningssammenhænge. Et flydende tal v repræsenteres på den sædvanlige matematiske form v = xb^y, hvor x er mantissen (med fortegn), b grundtallet og y eksponenten. Eksempler på denne form er -0,72510^2 (for -72,5) og 0,62510^(-2) (for 0,00625). I computeren lagres kun x og y, idet b er underforstået. Flydende tal er gerne normaliserede, dvs. eksponenten vælges således, at den absolutte værdi af mantissen ligger i området fra 1/b til 1. I fysikken anvendes tal, der går sig fra Plancks konstant 0,662610^(-34) til Avogadros tal 0,6023*10^23; antallet af betydende cifre i mantissen varierer stærkt mellem anvendelserne. Antallet af bit, der bruges til x og y, må derfor vælges omhyggeligt, således at der ikke opleves unødige restriktioner på talområdet. Specielt vil for få cifre til mantissen kunne give alvorlige problemer i forbindelse med større beregningsopgaver på grund af afrundingsfejl.

I moderne computere er b=2; b=16 forekommer dog hos nogle fabrikanter, men er kun en variation, idet der i begge tilfælde er tale om anvendelse af det binære talsystem. Mantisse og eksponent kan repræsenteres på forskellige former, men normalt er mantissen på to-komplement form. Antallet af bit, der bruges, varierer fra maskinarkitektur til maskinarkitektur og afhænger bl.a. af ordlængden. Typisk vil eksponenten have hvad der svarer til 2 til 3 decimale cifre og mantissen 7 til 12 decimaler. I IEEE-standarden IEEE 754 er angivet to formater: single precision med 8 bit eksponent og 24 bit mantisse, og double precision med 11 bit eksponent og 53 bit mantisse.

De elementære regneoperationer (addition, subtraktion, multiplikation og division) på flydende tal findes ofte kun på større computere, men kan her være meget hurtige ("talknusere"). På mindre computere (som PC'er) findes de ikke i maskinellet (i CPU'en), men må udføres af basisprogrammellet eller af ekstra elektroniske kredse, f.eks. en coprocessor. Hvis regneoperationerne giver resultater, som ligger uden for talområdet, vil der være tale om enten flydende overløb (ved for stor eksponent) eller underløb (ved for lille eksponent).

IEEE har som ovenfor nævnt standardiseret en repræsentation af flydende tal og har dertil specificeret algoritmer for regneoperationer. Der findes i dag chips, der følger denne standard. Dette giver øgede muligheder for at flytte beregningsopgaver.

Flydende tal benyttes overraskende nok også i høj grad ved formatering af tekster. En computers ydeevne, målt i megaflops, vil derfor også give et fingerpeg om dens præstationer i denne sammenhæng.

Forfattere: 
Klaus Hansen
Casper Thomsen