Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Auto-Moto
Mobilní telefony
Notebooky  |  Tablety
Příslušenství
Wearables  |  Ostatní
Svět hardware  |  Digimanie  |   TV Freak

Matematické operácie v eVB 3.0

Pepo_ce4you (28)|3.5.2005 16:39
Mám problem s jednoduchými matematickými operáciami v eVB. Napr. 30.16-30 a vyšlo mi 0,15999999. Skúšal som už všetky premenné double, integer ... ale stále nič. Napr 30,15-30 mi vypočíítalo dobre. Skúšal som aj priamo bez premenných ( text1= 30,16-30) a stále to isté. Je to divné. Mám N35 WM2003.
Erikt68i (266)|4.5.2005 09:30
:D :D Toto plyne z jednoduché binární matematické knihovny v daném vývojovém prostředí. Reálné dekadické číslo je převedeno do binárního tvaru s omezeným počtem bitů, tj. může dojít ke "zkreslení" obrazu čísla při převodu. Zkus si sám převést Tebou zadané číslo do binárního vyjádření a uvidíš sám kolik vlastně binárních míst potřebuješ. No a po skončení výpočtu je binární číslo přesně interpretováno jako realné dekadické. No a samozřejmě že opět jsme trochu vedle! Ale přesnost je pořád více než dostatečná - chyba je až na 8 řádu!
Řešení je prosté, počítá-li knihovna např. na 10 míst, zaokrouhlíš výsledek na 8 platných a tyto drobnosti se srovnají a výsledek bude jaký si představuješ. Na velkých počítačích se používá mnohem větší počet míst a je prováděno automatické zaokrouhlování, takže tyto "drobnosti" vůbec nevidíš, ovšem za cenu podstatně větší knihovny a podstatně větších nároků na procesor. takže pokud chceš větší přesnost výpočtu, musíš si opatřit lepší ale dražší a náročnější knihovnu, případně si ji napsat sám. Na toto téma bylo napsáno mnoho odborných publikací a je i mnoho zdrojových kódů takovýchto knihoven, ovšem v dnešní době ??
Pepo_ce4you (28)|4.5.2005 14:15
Dík za odpoveď, je vidno, že mám ešte veľké medzery:-(
Takže všetko zaokruhľovať. Mne je len divné, že to nevie pracovať správne už s zo stotinamy.