Forum » Programiranje » Java, double števila izven obsega (Problem)
Java, double števila izven obsega (Problem)
marjan_h ::
Namreč problem je da mi pri računanju double števil vrne tole -1.8189894035458565E-12, in pri naslednjem ukazu moram narediti naslednjo operacijo 1787.0214424751148 / -1.8189894035458565E-12.
Tukaj je ena velika težava. Če uporabim Math.ceil ali Math.floor mi slednje število -1.8189894035458565E-12
zaokroži na 0.
Kar je pa spet narobe. Ker ni dovoljeno deliti z 0, mi vrne Nan.
Kako se rešuje ta problem?
Tukaj je ena velika težava. Če uporabim Math.ceil ali Math.floor mi slednje število -1.8189894035458565E-12
zaokroži na 0.
Kar je pa spet narobe. Ker ni dovoljeno deliti z 0, mi vrne Nan.
Kako se rešuje ta problem?
jype ::
Hm? ceil in floor vrneta celo število in v tvojem primeru je to nič. Zakaj pa to počneš, če nočeš nič?
marjan_h ::
Ja če ne zaokrožim me vrže ven iz obsega števil in dobim infinity v javi. Če pa zaokrožim pride pa 0 in ne smem deliti z nič.
Kaj torej narediti?
Kaj torej narediti?
jype ::
To je blizu ničle. Infinity dobiš ker deliš z 1.8 * 10 na -12. Uporabi številski tip, ki to prenese: http://docs.oracle.com/javase/1.4.2/doc...
marjan_h ::
Ja samo kako lahko uporabiš pri tem številskem tipu recimo potenciranje. Metode v tem številskem tipu so samo osnovne.
marjan_h ::
Kako hudiča je zasnovana Java. To je neumnost. Uporabiš eno bolj zapletenejšo formulo z double števili in dobiš ven Infinity ali pa NaN.
Pebkac ::
Problem ni v Javi, pri računanju z floating point števili v večini jezikov boš naletel na določene omejitve Floating point @ Wikipedia
Si ziher da ne moreš izračunat 1787.0214424751148 / -1.8189894035458565E-12?
Ravnokar sprobano Java meni to brez problema izračuna in sicer dobim rezultat -9.824254275432145E14
Si ziher da ne moreš izračunat 1787.0214424751148 / -1.8189894035458565E-12?
Ravnokar sprobano Java meni to brez problema izračuna in sicer dobim rezultat -9.824254275432145E14
Spura ::
Ma dej, 10^-14 double zihr prenese. Ce se ne motim je najmanjsa stevilka okoli 10^-210.
Pomojem mas zjebano formulo.
Pomojem mas zjebano formulo.
marjan_h ::
Zanimivo je to, da sedaj ko ročno vnesem podatke normalno vrne vrednost double.
Celotna koda je predolga, da bi jo sem kopiral.
Mogoče kdo vidi problem v formuli? Gre za metodo določanje premice pri trendih.
Mislim sama formula je pravilna, ampak če najde mogoče kdo mesto kjer bi lahko dobil rezultat
2.34252342352421E^32 itd.
public class Test { public static void main(String args[]){ double a = 106.3016990363956; double b = 1478.7176398586653; double c = 16.67657694555068; double d = 276.9919474098783; int k = 8; double koncnaVrednost = (c * b - a * c) / (k * b - Math.pow(a,2)); System.out.println(koncnaVrednost); } }
Celotna koda je predolga, da bi jo sem kopiral.
Mogoče kdo vidi problem v formuli? Gre za metodo določanje premice pri trendih.
Mislim sama formula je pravilna, ampak če najde mogoče kdo mesto kjer bi lahko dobil rezultat
2.34252342352421E^32 itd.
Spura ::
Ne vem kje si ti dobil tako vrednost. Btw spremenljivke d ne uporabljas.
Tale tvoja koda vrne cifro ranga med 10 in 100.
Potencialno lahko dobis 0 v imenovalcu kadar k * b = a^2, kadar sta pa k * b in a^2 priblizno ista pa dobis NaN.
Tale tvoja koda vrne cifro ranga med 10 in 100.
Potencialno lahko dobis 0 v imenovalcu kadar k * b = a^2, kadar sta pa k * b in a^2 priblizno ista pa dobis NaN.
Zgodovina sprememb…
- spremenil: Spura ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | float vs decimalOddelek: Programiranje | 6279 (4412) | Looooooka |
» | [c#] NaN, not a numberOddelek: Programiranje | 1453 (1212) | Infinity |
» | [c#] Vstavljanje vrednosti v tabeloOddelek: Programiranje | 1614 (1436) | Cvenemir |
» | [Java] Kako filtrirati, katera števila lahko vpišeš?Oddelek: Programiranje | 2082 (1784) | fiction |
» | [C++] Functor za izračun osnovne statistike podatk. strukture (vector,list...)Oddelek: Programiranje | 1490 (1403) | Vesoljc |