» »

[C] paranormalni pojav

[C] paranormalni pojav

plus ::

sam sem bolj kot ne začetnik v c-ju, sam še vedno mislim da se kaj takega naj nebi zgodil :P
program je skompajlan v gcc-ju pod win xp.


#include < stdio.h >
main ()
printf("a: %.20f\n",0.52);
printf("b: %.20f\n",0.283);
printf("c: %.20f\n",3.52);
printf("d: %.20f\n",1.344);
}


izpis:
a: 0.52000000000000002000
b: 0.28299999999999997000
c: 3.52000000000000000000
d: 1.34400000000000010000

kdo ve zakaj ali bo to ostal čudež?
  • spremenilo: snow ()

Sergio ::

IEEE 754. Predstavitev števil s plavajočo vejico ima končno natančnost.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Vesoljc ::

hehe, in pol se cudimo zakaj so nekoc (ali se danes) mislili da je grmenje jeza bogov...
Abnormal behavior of abnormal brain makes me normal...

Gundolf ::

Problem razumevanja je morda v tem, da se ta končna natančnost floating pointa meri v decimalnih mestih števila predstavljenega v binarnem sistemu. Če se da nekaj z recimo eno decimalko napisat v decimalnem sistemu, še ni nujno, da se bo sploh dalo s končnim številom decimalk zapisat v binarnem sistemu.

Matako ::

Lep primer je recimo 0.1 (ena desetina). To je sicer zelo lično desetiško število a na žalost gledano binarno, iracionalno. Ne da se kar zapisati v binarnem ulomku oz. zapisano binarno bi imelo neskončno zaporedje cifer za piko.

Je pa zelo pohvalno, da si to opazil. Poznam kar nekaj ljudi, ki si s programiranjem služijo kruh pa so recimo prepričani, da so FP "predstavitev realnih števil v računalniku". WTF? FP je zvit in ekonomičen način za opravljanje zelo veliko izračunov, je pa samo nek model, nič več in kot tak ima SVOJA pravila.

Kot prvo, ne samo, da imajo FP omejeno natančnost - le ta se zmanjšuje proti večjim obsegom. Po domače povedano, za VELIKO razliko od realnih števil, je FP vrednosti ne le končno mnogo, ampak so redkeje posejana, ko gremo proti večjim vrednostim (to je to "plavanje" vejice). To recimo ogromno ljudi enostavno spregleda.
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()

jype ::

Najhuje je, ko to (floating point matematiko) počnejo programerji finančnih softverov. Brrr. Kakšno zaokroževanje, neki, temu se reče blefiranje :)

l0g1t3ch ::

No men se 15 mest natančno ( 64bit fp ) zdi dovolj tudi za finančni sotwear ali pač ?
Če pa hočeš popolno natančnost pa baje obstaja tudi na računalnikih desetiška predstavitev števil, čeprav tega še nisem uporabljal.

Matako ::

No men se 15 mest natančno ( 64bit fp ) zdi dovolj tudi za finančni sotwear ali pač ?


Pač! Dosti teh napak z natančnostjo je kumulativne narave - večja natančnost samo odloži katastrofo. Jasno FP je za finančen softver še vedno čisto ok, in sploh ni treba, da imaš ne vem koliko mest - bolj je pomembno, da se zaokrožuje na pravem mestu (zap. operacij).

Ja, vse skupaj dejansko JE znanost - večina jo je v tem znanem delu, vendar na srečo ni treba vsega vedeti.

Upam saj, ker je vse skupaj dosti hardcore.
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()

snow ::

Prihodnjič pri odpiranju najprej poglej PREBERI ME: označevanje topicov v oddelku programiranje!
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

float vs decimal

Oddelek: Programiranje
366193 (4326) Looooooka
»

java Double.valueOf

Oddelek: Programiranje
81381 (1275) Spura
»

C++ double _1.0000imavrednost0.99999

Oddelek: Programiranje
131554 (1307) Spura
»

kaj je to plavajoča vejica??

Oddelek: Loža
4010829 (7107) Mavrik
»

[c] osnove

Oddelek: Programiranje
352506 (1843) fiction

Več podobnih tem