4. Typy dat

4.4. Zobrazení reálných čísel

Reálná čísla nelze obecně v počítači přesně zobrazit, protože paměťový prostor pro jejich zobrazení je omezený (např. 2–4 slova resp. 4–8 bytů). Ze stejných důvodů se nemohou zobrazit ani všechna racionální čísla. Obecně lze zobrazit pouze číslo z určitého intervalu a s jistým maximálním počtem platných číslic, daných délkou zobrazení. Přesně lze zobrazit pouze ta reálná čísla, která lze vyjádřit jako konečnou posloupnost kladných a záporných mocnin čísla 2, přičemž počet těchto mocnin s koeficienty 0 a 1 je menší, než počet bitů rezervovaných pro zobrazení reálného čísla.

 

Reálné číslo se zobrazuje v tzv. semilogaritmickém tvaru nebo též jako číslo s pohyblivou řádovou čárkou (viz Obrázek 1):

 x=M \ast z^E  

kde:

  • x ... zobrazované číslo

  • M ... mantisa v normalizovaném tvaru <0.5,1)

  • z ... 2

  • E ... exponent <-128,127>


 Zobrazení reálného čísla

Obrázek 1: Zobrazení reálného čísla


Mantisa obsahuje číslo v normalizovaném tvaru. Exponent určuje, o kolik míst je třeba posunout řádovou tečku, a to, je-li:

  • exponent > 0 (|číslo| > 1), pak vpravo
  • exponent < 0 (|číslo| < 1), pak vlevo


Existují různé modifikace tohoto způsobu zobrazení v konkrétním počítači, podstata problému zobrazování zůstává. Počet bitů mantisy a exponentu závisí na typu počítače, např. 16 bitový počítač: mantisa 24 bitů, exponent 8 bitů tj. 32 bitů (4 byte, 2 slova); čísla mají přesnost 6 až 7 platných číslic a rozsah je asi 10-38 až 1038.

Obvykle se pro zobrazení reálného čísla používají 4, 6 a 8 bytů.

Při zobrazení reálného čísla se uvažují 3 vlastnosti zobrazení:

  • Největší zobrazitelné číslo
  • Nejmenší kladné číslo různé od 0, nebo číslo, které, když je přičteno k 1.0, tuto hodnotu nezmění
  • Počet platných dekadických číslic

Pozn.: Přesně lze zobrazit jen taková reálná čísla, jejichž desetinnou část lze vyjádřit jako součet mocnin jedné poloviny. Ostatní čísla se při převodu z desetinného čísla a ve výsledku aritmetické operace zaokrouhlují. Zde může být zdroj velmi nepříjemných chyb.

 

!!! V žádném případě se nedoporučuje porovnávat dvě reálná nenulová čísla X a Y na rovnost. Tuto úlohu je třeba převést na:

  • Porovnání v relaci „větší“ (X > Y), pokud první člen roste, nebo „menší“ (X < Y), pokud první člen klesá
  • Požadavek, aby absolutní hodnota rozdílu byla menší než dostatečně malé číslo (abs(X - Y) < Eps)