5 / 2 = 2,5
- ale jak se s číslem 2,5
pracuje v počítači?
Desetinná čísla ve dvojkové soustavě
Dokážete odhadnout, kolik je 0,12 v desítkové soustavě?
- 0,12 = 0,510
- 0,012 = 0,2510
- 0,0012 = 0,12510
- 0,00012 = 0,062510
- …
Z této číselné řady se dá na první pohled vyčíst jednoduchý vztah vydělením dvěmi.
- 1 / 2 = 0,5
- 0,5 / 2 = 0,25
- 0,25 / 2 = 0,125
- 0,125 / 2 = 0,0625.
- …
Ale co když začnete převádět libovolná čísla z desítkové soustavy do dvojkové soustavy? Pak to začne bejt divný.
110 = 12
0,910 = 0,1110011001100110011…2
0,810 = 0,11001100110011001101…2
0,710 = 0,10110011001100110011…2
0,610 = 0,1001100110011001101…2
0,510 = 0,12
0,5110 = 0,1000001010001111011…2
Většina desetinných čísel z desítkové soustavy nemá ve dvojkové číselné soustavě žádnou hezkou hodnotu a obsahují řadu cifer která se v nějakém složení opakují do nekončena.
Je to stejné, jako 10 / 3 = 3,333333…
Počítače neumí být přesné v desetinné interpretaci
⚠️ Pozor na to: většina desetinných čísel desítkové soustavy mají ve dvojkové soustavě hodnoty, jejichž cifry se táhnou do nekonečna ale fyzické počítače nemají nekonečnou kapacitu.
Co to znamená?
Pokud například pracujete v počítači s číslem 0,810 tak musíte počítat s tím, že jeho vyjádření v počítači není přesné protože místo 0,11001100110011001100110011001100....
se uloží například jen 0,1100110011001100
.
Jakmile tuto binární hodnotu převedete zpátky tak nedostanete 0,810 ale něco jako 0.799999998779…10
Není to problém?
Není.
Jako ajťák však musíte dobře znát nástroje, se kterými pracujete. O práci s desetinnými čísly se budeme bavit později v kapitolách o tvorbě softwaru.