Diskuze: Velká čísla
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
No takováto veliká čísla musíš převádět - jako že 1 000 000 je 1 * 10 na -6,... Rozhodně pak používej long a desetinná čísla musíš do longu rozdělit,... Aby nedošlo ke strátám, tak se snaž do rozdělení pracovat se stringem,...
Zde se ale používá E zápis - takže místo 1 * 10 na 6 (tamten mínus je překlep) napíšeš 1E6 -což je stejný výsledek,...
Mohu se zeptat, k čemu potřebuješ násobit tak velká čísla? Vždy bude existovat číslo, které rozsahem přesáhne rozsah datového typu. Tutoriál se věnuje základům C#, ne tomu, jak pracovat s velkými čísly, to už zaprvé nejsou základy a zadruhé jsou k tomu potřeba speciální knihovny.
S takovýmto problémem se v praxi asi nikdy nesetkáš.
Nicméně chápu, že tě to zajímá. C# (resp. .NET) má datový typ
BigInteger. Z desetinných čísel je asi největší typ decimal. Existují
nějaké knihovny jako BigDecimal, ale ty už se musí dostahovat.
jednoduše každá proměnná má omezenou hodnotu, existuje tabulka těch hodnot. Double má mnohem menší omezenou hodnotu než int. Přesné hodnoty si nepamatuju ale vim, že nevyšší má Decimal. Avšak i proměnná Decimal má hodnotu omezenou ale víc než Double nebo Int. Také nemusíš používat proměnnou Decimal, když pracuješ s čísly 0-100, zbytečně to zatěžuje pamět.;)
U jednoduché kalkulačky se nemusíme bavit o zbytečné zátěži paměti. Možná u rozsáhlých matic. Pokud potřebuji vědecká čísla, používám typ float (příp. double) nebo complex. Pokud budu počítat finanční hodnoty, použití decimal je na místě.
Občas dělám i výpočty s neomezenou přesností, ale víc než 10 000 míst se na obrazovce špatně zobrazuje
Můžu se zeptat pro jaký účel jsi využil neomezenou přesnost?
Dělal jsi i nějaké složité výpočty nebo jen základní?
Docela by mě to zajímalo.
Jednou jsem o neomezené přesnosti přemýšlel v souvislosti s
automatickou
přípravou 3D scén pro POV-Ray, ale nakonec jsem to stejně omezil.
Problémy se pak množily tempem, které nebylo únosné.
Neomezenou přesnost jsem využil vlastně jen pro demonstrační účely. Počítal jsem faktoriál, variace, kombinace, mocniny dvou apod. Nic moc důležitého.
V případě 3D scén pro POV-Ray by podle mne měl stačit obyčejný float a troufám si tvrdit, že v mnohých případech by stačil i integer. Všechny komponenty scény si dělám tak, aby mi vycházela malá celá čísla a teprve výsledné objekty zoomuji, rotuji a posouvám podle potřeby.
Nakonec jsem s float vystačil, ale chtěl jsem právě některé věci
předpočítat, aby to pak nezdržovalo render. Zároveň jsem nechtěl
kumulovat chyby ani po více transformacích. Měl jsem tehdy trochu
větší plány než schopnosti. To se občas stává.
Navíc POV-Ray byl tehdy ve verzi tuším dva a něco. S větším
počtem
objektů se neuměl sám poprat.
Zobrazeno 12 zpráv z 12.