Flyttal

Från Wikipedia

Flyttal (engelska: floating point numbers) är en approximerad datorrepresentation av reella tal.

Ett normalt flyttal ('normal' är här en teknisk term) består av ett tecken (plus ett eller minus ett, vanligtvis representerat med en bit) en mantissa och en exponent, och kan skrivas som , där är basen (vanligen 2 eller 10, men även 16 förekommer), är mantissan (som är minst 1 men mindre än ) och exponenten; alternativt låter man mantissan vara mellan och 1, vilket ger en exponent som är ett större. Då exponentens värde är begränsat, kan inte 0 representeras på detta sätt. Vanligen använder man för 0 minsta möjliga exponent samt låter mantissan vara 0. En generalisering av representationen för 0 är de subnormala talen, som är nära 0 och fyller det så kallade underflödesgapet med fler tal än bara 0. Dessutom finns, numera, representationer för +∞ och −∞, samt NaN (inte-ett-tal, Not a number).

De flyttal en dator kan räkna med består av ett begränsat antal bitar, därför har mantissan en begränsad noggrannhet (upplösning) och exponenten (som är ett positivt eller negativt heltal) en begränsad storlek.

På grund av sin begränsade noggrannhet måste avrundningar göras, och därmed följer flyttal i allmänhet inte de matematiska reglerna associativitet och distributivitet, vilka gäller för reella tal. Vetenskapen om numeriska metoder går delvis ut på att formulera om beräkningar så att felen minimeras.

Standard

IEEE har standardiserat en datorrepresentation av binära flyttal i IEEE 754. Denna standard följs av nästan alla moderna datorer. Några undantag är IBM:s stordatorer, som har stöd för hexadecimala flyttal och IEEE 754, Crays vektormaskiner, där T90-serien hade IEEE-flyttal, medan SV1 fortfarande använder Crays eget flyttalsformat, och VAX-systemen som hade sitt eget flyttalsformat. Dessa, och många andra, flyttalssystem gjordes innan första versionen av IEEE 754, och ett fåtal finns kvar av bakåtkompatibilitetsskäl.

Första versionen av IEEE 754 beskrev två olika flyttalsformat, så kallade single precision- och double precision-flyttal, samt tillät extended precision för vardera.

IEEE 754 fick en andra version 2008. Den nya versionen specificerar fem flyttalsformat för beräkningar: binary32 (f.d. single precision), binary64 (f.d. double precision), binary128, samt decimal64 och decimal128. Som namnen antyder har de två sistnämnda bas 10. Den specificerar dessutom två format för lagring av mindre precisa tal, binary16 och decimal32, och tillåter dessutom extended precision både för binära och decimala flyttal.

Användning

Flyttal används främst i numeriska datortillämpningar där man behöver representera verkliga eller simulerade fysikaliska värden som avstånd, tidsintervall, temperaturer och liknande. Vanliga användningsområden är vetenskapliga numeriska program, datorbaserad simulering och datorspel.

På grund av avrundningsfelen som flyttalen alltid måste dras med är de direkt olämpliga för affärssystemsberäkningar. Istället använder man datatyper som är bättre lämpade för finansiella kalkyler.