Ahojte,

2011/2/8 Libor Jelinek <ljeli...@virtage.com>:
> To znamená, že bych měl na double a float provždy zapomenout a všechno
> nahradit třídou BigDecimal (jak doporučuje Oráclí Java Tutorial)?

Nahradit jen tam, kde presnost potrebujete (fakturace apod.). Kdyz ale
muzete malou odchylku zanedbat a jde vam o rychlost (napr. resite
matematicke nebo graficke ulohy) na BigDecimal zapomente a pouzijte
primitivni typy (float, double).
Jinak pro otestovani desetihalerove aritmetiky s typem float muzete zkusit:

float halere = 0f;
for (int i = 1; i <= 1000000; i++) {
    halere += 0.1f;
    if (i % 1000 == 0) {
        System.out.println(i / 10 + "~" + halere);
    }
}

Na mem openjdk-6 to zacina:
100~99.99905
a konci to
100000~100958.34

Za tyto pocty by vam asi zakaznici moc nepodekovali. :-)

-- pepa cacek

Odpovedet emailem