Zdravim,
jsem v jave novy a potreboval bych poradit jak osetrit preteceni doublu pri scitani a odcitani v kladnych i zapornych hodnotach. neco jako Double.MAX_VALUE + NECO = overflow && -Double.MAX_VALUE - NECO = overflow.
Diky moc
Zdravim,
jsem v jave novy a potreboval bych poradit jak osetrit preteceni doublu pri scitani a odcitani v kladnych i zapornych hodnotach. neco jako Double.MAX_VALUE + NECO = overflow && -Double.MAX_VALUE - NECO = overflow.
Diky moc
#1 Janous
No, mně to přijde jako když si motáš běžné celočíselné výpočty a výpočty v IIE754, takhle to tam nefunguje.
Nějaký popis pro iee754 např zde: https://en.wikipedia.org/…oating_point a zde https://cs.wikipedia.org/wiki/IEEE_754 (doporučuji pročíst hlavně EN verzi)
Pro defaultní nastavení by měl být výsledek "přetečení" hodnota "infinity". Takaže v javě by mělo stačit zkontrolovat výsledek pomocí Double.isInfinity nebo tak nějak.
Jak ale psal Kit, tak ve většině běžných případů se k tomuto nedopočítáš.
Nicméně double (a další bninary decimal čísla iee754) trpí i jinými vlastnostmi, které mohou leckoho překvapit. Např:
- double má opravdu hooodně velký rozsah, ale jen omezenou "přesnost" - počet platných dec míst je jen kolem15. (což už se dá překročit, např při průběžném přičítání malých čísel k jednomu velkému)
- neschopnost opravdu přesně reprezentovat některá dekadická desetinná místa (např 1.1 je ve skutečnosti uloženo jako cca 1.10000000000000008881784197001 atp.)
Asi by bylo dobré popsat jak a co se snažíš počítat, kolik máš vstupních čísel, s jakou přesností, atp... .
A pak se dá poradit, jakým směrem se dát.
Kromně jiného ještě upozorním na hodnotu NaN která se také múže objevit jak třeba výsledek (0.0/0.0)
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku