Avatar
cztomt
Redaktor
Avatar
cztomt:

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
Redaktor
Avatar
Odpovídá na cztomt
matesax:

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
Redaktor
Avatar
Odpovídá na cztomt
matesax:

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
Redaktor
Avatar
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na cztomt
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
cztomt
Redaktor
Avatar
cztomt:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na cztomt
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Rohlík
Neregistrovaný
Avatar
Odpovídá na cztomt
Rohlík:

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
Redaktor
Avatar
Odpovídá na Rohlík
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
TomBen:

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.