ÚvodBlogy

Manifest Miroslae

Proč 0.1 + 0.2 není 0.3

IT, IEEE 754, Floating Point, technology

IEEE 754: Proč 0.1 + 0.2 není 0.3

Představte si, že jste na matěmatické hodině a učitel se vás zeptá, kolik je 0.1 + 0.2. Většina z nás by okamžitě odpověděla, že 0.3. Ale co kdybych vám řekl, že v počítačovém světě to tak jednoduché není?

IEEE 754 a jeho význam

V počítačích se čísla ukládají ve formátu, který se nazývá IEEE 754 Floating Point Standard. Tento standard je klíčový pro všechny moderní počítače, protože určuje, jak se desetinná čísla ukládají a počítají.

Jak funguje IEEE 754?

IEEE 754 používá binární systém k reprezentaci čísel s plovoucí desetinnou čárkou. V praxi to znamená, že každé číslo je rozděleno na tři části: znaménko, exponent a mantisa.

(-1)^sign × 1.mantisa × 2^exponent

Tento způsob umožňuje reprezentovat velmi malá i velmi velká čísla, ale přináší i určité nevýhody - například některá desetinná čísla nelze reprezentovat přesně.

0.1 + 0.2 != 0.3: Co se děje?

Teď k hlavní otázce - proč 0.1 + 0.2 v počítači nedává 0.3? Je to proto, že čísla jako 0.1 a 0.2 nelze přesně reprezentovat v binárním systému. Když je sečtete, dostanete číslo, které je velmi blízko 0.3, ale není to přesně 0.3.

Příklad v Pythonu

Zkuste si to sami v Pythonu:

print(0.1 + 0.2 == 0.3)  # Výsledek bude False

Tento kód vrátí False, což může být překvapující, ale je to důsledek toho, jak jsou čísla ukládána.

Proč je to důležité?

Tento jev má významné důsledky při programování. Pokud pracujete s finančními výpočty nebo jinými aplikacemi, kde je přesnost kritická, musíte být na tento problém připraveni.

Jak to obejít?

  • Zaokrouhlování: Můžete čísla zaokrouhlit na určitou přesnost.
  • Použití knihoven: Například Python nabízí knihovnu decimal, která umožňuje přesnější reprezentaci desetinných čísel.

Pokud se rozhodnete pracovat s čísly s plovoucí desetinnou čárkou, je dobré být si vědom těchto výzev a mít plán, jak je řešit.

Závěr

IEEE 754 je základním stavebním kamenem moderního výpočetního světa. Pochopení jeho principů vám pomůže lépe porozumět tomu, proč některé věci v počítačích fungují tak, jak fungují. A příště, až se budete divit, proč 0.1 + 0.2 != 0.3, budete vědět proč!