Názor k článku Ruby v příkladech (2) - Složitější skripty od anonym - Na výpočty typu účetnictví by šlo možná použít...

  • Článek je starý, nové názory již nelze přidávat.
  • 15. 9. 2005 11:29

    bez přezdívky
    Na výpočty typu účetnictví by šlo možná použít třídu BigDecimal ze standardní knihovny (je ale potřeba před použitím zadat require 'bigdecimal'). Počítá decimálně (tedy nikoliv dvojkově), počet desetinných míst se dá nastavit dynamicky na libovolnou hodnotu. Cenou nejspíše bude (nezkoušel jsem) podstatné zpomalení oproti Float, dále menší pohodlí při použití (konstanta s des. tečkou je typu Float, konstanta BigDecimal se musí normálně nainstancovat) a dále to, že tam nejsou automatické převody při přetečení Float operací (tj. minimálně jeden operand musí být BigDecimal). Samozřejmě i tak může docházet k zaokrouhlovacím chybám, např. Bignum("1", 90) / 3 bude přesné pouze na devadesát desetinných míst. Pokud by se mělo předcházet i takovýmto chybám, musel by se používat typ Rational, který tím, že používá zlomky, nemá zaokrouhlovací chyby žádné. Použití zlomků by ale bylo ještě méně pohodlné, protože např. číslo 0.34 by se muselo zadávat jako Rational(34,100).