Proč je desetinné číslo defaultně double?

student

Re:Proč je desetinné číslo defaultně double?
« Odpověď #30 kdy: 04. 03. 2014, 15:54:00 »
Tohle se hodi treba pro financni aplikace.
Bodaj by tak ludia programovali aspon v bankach...

Pri robeni jedneho eshopu sme sa divili, ze pri posielani ciastky obsahujucej jednotky halierov sa odosiela a aj nam chodi niekedy o halier menej. Logy ukazovali spravne ciastky poslane do API. Nakoniec sme sa od banky dozvedeli, ze ide o technicky problem a ze mame zatial platbu akceptovat aj tak.

Zkratka, floating point je dobry vynalez, a nelze ho trivialne nahradit pomoci vypoctu s pevnou carkou (tedy integery).
Je to dobry vynalez a na vela veci sa hodi, ale bohuzial je niekedy vyuzivany viac, ako je treba. Typicky niekto neschopny vidi desatinnu ciarku a pise double alebo float.


gamer

Re:Proč je desetinné číslo defaultně double?
« Odpověď #31 kdy: 04. 03. 2014, 16:03:23 »
re: Rational nebo Fractional type: Nene, naopak, nektera dobra DSP to maji primo v instrukcni sade, naopak jsou jednoduche na rychlou implementaci v kremiku.
Fractional aritmetika v DSP nemá s racionálními čísly nic společného. Fractional čísla v DSP jsou v podstatě floating point čísla bez exponentu v rozsahu -1.0 až skoro 1.0
http://en.wikipedia.org/wiki/Fixed-point_arithmetic

David

Re:Proč je desetinné číslo defaultně double?
« Odpověď #32 kdy: 04. 03. 2014, 17:37:22 »
Btw...
použití float vs. double neznamená nutně nižší přesnost výpočtů. Pokud běží výpočty na FPU, tak tato pracuje v 80 bitech. Tj. k ořezání/snížení přenosti dojde pouze pokud se uloží data z FPU registru zpět do paměti (vlastní výpočet může celý proběhnout v 80 bitech). Velmi záleží na optimalizacích a povaze řešené úlohy.

Kolemjdoucí

Re:Proč je desetinné číslo defaultně double?
« Odpověď #33 kdy: 04. 03. 2014, 17:56:22 »
Btw...
použití float vs. double neznamená nutně nižší přesnost výpočtů. Pokud běží výpočty na FPU, tak tato pracuje v 80 bitech. Tj. k ořezání/snížení přenosti dojde pouze pokud se uloží data z FPU registru zpět do paměti (vlastní výpočet může celý proběhnout v 80 bitech). Velmi záleží na optimalizacích a povaze řešené úlohy.

Pokud běží výpočty na FPU, tak záleží na libovůli programátora zda FPU pracuje v režimu 24 nebo 53 nebo 64 bitů, týká se zejména nejčastěji využívaných operací + - * /.

Strana 189
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf

ded.kenedy

Re:Proč je desetinné číslo defaultně double?
« Odpověď #34 kdy: 04. 03. 2014, 19:56:13 »
Citace
Pokud běží výpočty na FPU,

Vetsinou nebezi, ... dnes je vetsina vypoctu s plovouci radku pocitana pres SSEx, na 64bitovych intelech je to oficialne preferovane reseni a prekladace se podle toho chovaji.


Inkvizitor

Re:Proč je desetinné číslo defaultně double?
« Odpověď #35 kdy: 05. 03. 2014, 08:25:09 »
Uznavam, ze jsem ponekud nadsadil. Samozrejme, ze racionalni cisla nejsou pouzitelna vsude. Spis jsem mohl rici, ze pokud nekdo pouziva floaty, mel by vedet, k cemu to muze vest, ale to by nebylo dostatecne uderne.  ;)

Jinak, i kdyz s Inkvizitorem vetsinou souhlasim, tady docela dost ne - racionalni cisla jsou fajn, bohuzel aplikaci, ktere by se s tim mohly spokojit, je dost malo. Temer v kazdem realnem vypoctu jsou potreba odmocniny a goniometricke funkce. Navic jelikoz je to obvykle implementovano v SW, bude to fakt pomale.

Zkratka, floating point je dobry vynalez, a nelze ho trivialne nahradit pomoci vypoctu s pevnou carkou (tedy integery).

Kolemjdoucí

Re:Proč je desetinné číslo defaultně double?
« Odpověď #36 kdy: 05. 03. 2014, 08:58:42 »
dnes je vetsina vypoctu s plovouci radku pocitana pres SSEx

SSE pro float a double podporuje jenom asi pět základních operací jako + - * /, zbytek jako sin, tg a podobně je stále přes FPU.
Dále SSE umí přesnost jenom 53 a 24 bitů, žádná verze SSE neumí rozšířenou přesnost 64 bitů.

ded.kenedy

Re:Proč je desetinné číslo defaultně double?
« Odpověď #37 kdy: 05. 03. 2014, 17:57:22 »
@Kolemjdoucí: A co jsi tim chtel rict?

Citace
SSE pro float a double podporuje jenom asi pět základních operací jako + - * /

Tech operaci je vic, treba i SQRT. Navic processor ma k dispozici 15 (a vic) 128bitovych (a vetsich registru), coz prekladace s radosti vyuzivaji, vic nez staricke FPU. Ony goniometricke funkce nejsou zase tak casto pouzivane.

Citace
Dále SSE umí přesnost jenom 53 a 24 bitů, žádná verze SSE neumí rozšířenou přesnost 64 bitů.

A koho to trapi? Vetsina programovacich jazyku to stejne nedokaze vyuzit.