NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Avatar
cztomt
Tvůrce
Avatar
cztomt:22.5.2012 18:12

Zdravím, ta kalkulačka co se objevuje v tomto seriále "nezvládá" vypočítat
např. 1000000000 * 100000000
zkoušel jsem tam dát double ale nic:(

 
Odpovědět
22.5.2012 18:12
Avatar
matesax
Tvůrce
Avatar
Odpovídá na cztomt
matesax:22.5.2012 18:14

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,...

 
Nahoru Odpovědět
22.5.2012 18:14
Avatar
matesax
Tvůrce
Avatar
Odpovídá na cztomt
matesax:22.5.2012 18:17

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,...

 
Nahoru Odpovědět
22.5.2012 18:17
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:22.5.2012 18:21

ztrátám :)

 
Nahoru Odpovědět
22.5.2012 18:21
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na cztomt
David Hartinger:22.5.2012 18:35

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.

Nahoru Odpovědět
22.5.2012 18:35
New kid back on the block with a R.I.P
Avatar
cztomt
Tvůrce
Avatar
cztomt:22.5.2012 19:18

No, já jsem chtěl ze jen ze zvědavosti vědět jaký datový typ by se dal použít nebo jak by se to dalo udělat:)

 
Nahoru Odpovědět
22.5.2012 19:18
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na cztomt
David Hartinger:22.5.2012 19:56

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.

Nahoru Odpovědět
22.5.2012 19:56
New kid back on the block with a R.I.P
Avatar
Rohlík
Neregistrovaný
Avatar
Odpovídá na cztomt
Rohlík:19.6.2012 14:13

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.;)

 
Nahoru Odpovědět
19.6.2012 14:13
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:19.6.2012 14:28

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 :)

Nahoru Odpovědět
19.6.2012 14:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Kit
TomBen:20.10.2012 13:49

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é.

Nahoru Odpovědět
20.10.2012 13:49
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na TomBen
Kit:20.10.2012 14:05

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.

Nahoru Odpovědět
20.10.2012 14:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Kit
TomBen:20.10.2012 14:12

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.

Nahoru Odpovědět
20.10.2012 14:12
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.