Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] Ylivuoto tyypissä Double

jaanas [28.10.2010 08:27:05]

#

hei,
tulee ylivuoto käytettäessä tyyppiä Double olevaa muuttujaa. Kyse on mallinsovitusohjelmasta. Onko mitään keinoa tallentaa muuttujia, jotka tyypissä double aiheuttavat ylivuodon.

vp [28.10.2010 08:40:52]

#

Tuntuu vaikealta kuvitella että käytät lukua joka ei sovi tälle aluuelle:
-1.79769313486232 E308 to -4.94065645841247 E-324 for negative values; 4.94065645841247 E-324 to 1.79769313486232 E308 for positive values.

Tosin tarkkuus tuossa loppuu melko nopeasti (8 tavua 15 numeron tarkkuus).

Voitko vähän valaista tilannetta jossa ylivuoto tulee?

jaanas [28.10.2010 08:48:32]

#

Se tulee laskettaessa funktiota exp(-(x/a)^b), missä a ja b ovat ratkaistavat parametrit. Ilmeisesti ylivuoto tulee , kun ratkaisija ajautuu sivuun oikeasta ratkaisusta ja b:lle alkaa tulemaan suuria arvoja.

Merri [28.10.2010 08:48:33]

#

Variant-muuttujat tukee alatyyppiä Decimal, joka muistaakseni kestää Doublea isompia numeroita. Et voi määrittää muuttujaa suoraan Decimaliksi, vaan yleensä helpointa on tehdä merkkijonosta CDecillä Decimal.

Lienee kuitenkin parempi selvittää syy sille, että tulee ylivuoto. Doublen skaala kun on aika laaja.

Muoks!
Eli ei muuta kuin debuggia lisää :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta