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)
.