Diskuze: Nepřesnosti datového typu double
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= 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.
K přesnosti typu double: podívej se na to, jak počítač
reprezentuje double a jak se pracuje s čísly s pohyblivou
řádovou čárkou (viz https://www.youtube.com/watch?… a http://floating-point-gui.de/).
Mocněním v cyklu se program moc nezpomalí. Nicméně uložit si
opakující se část výpočtu do proměnné je vždy dobrý nápad už jen
kvůli přehlednosti. Složitost záleží ještě na velikosti
pole a implementaci pole.Contains Pokud tahle metoda
prochází lineárně prvky pole, tak můžeš v nejhorším případě provést
řádově až délka pole * počet cyklů operací. Jestli je
obojí (délka pole i počet cyklů) v řádů stovek, pak to nebude vadit.
Alternativní řešení nepřesnosti záleží na problému. Například
pokud počítáš jen 3. odmocniny čísel a v poli jsou jen celá čísla
(resp. jejich třetí mocnina je celé číslo), pak je do pole
stačí ukládat ve třetí mocnině. V takovém případě můžeš místo
double použít celá čísla (místo
pole.Contains(Math.Pow(64, 1.0 / 3.0) stačí zavolat jen
pole.Contains(64)).
						Díky za zajímavý příspěvek, na druhém odkazu je to skvěle
vysvětlené 
Nakonec jsem to trochu obešel a v KSP-Z z úlohy Mocniny mám 7 z 10 
 (Moc se mi nechce zjišťovat,
proč jen 7.)
if (d % 1 > 0.99999 || d % 1 < 0.00001 ||d % 1 == 0)
        //.....
					V té úloze nemusíš vůbec používat double, vystačíš si
s celými čísly. 
Zobrazeno 4 zpráv z 4.