Matematické operácie v eVB 3.0
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.
: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ě ??
Ř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ě ??