Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Chcem poprosiť, môj program sa správa dosť nezvyčajne.
Mám program:
double d = 0.1; ushort s = 10; ushort c = (ushort)s/d;
Výsledok je 9.
Upravil som takto:
double d = 0.1; ushort s = 10; ushort c = (ushort)Math.Round(s/d);
Výsledok je 10. Paráda, funguje to!
To som si myslel, že funguje, ale až tak moc nie :-(
Pozor, toto som nepochopil:
double d = 0.1;
ushort s = 10;
ushort c = (ushort)Math.Round(s/d);
ushort[] v = new ushort[10];
for (ushort i = 0; i<10; i++)
{
v[i] = c;
}Aký by som asi čakal výsledok? Že by v každom v[i] bola hodnota 10? No tak to som na dosť veľkom omyle, pretože výsledok je nasledovný:
v[0] = 10;
v[1] = 10;
v[2] = 10;
v[3] = 10;
v[4] = 10;
v[5] = 9;
v[6] = 10;
v[7] = 10;
v[8] = 10;
v[9] = 10;
V podstate je tam vždy jedna 9 na niektorom mieste. Vie mi niekto vysvetliť prečo?!
Toto vážne nechápem.
Ešte doplním, zvýšil som veľkosť poľa na 1000, vkladal som hodnotu 1000 (100/0.1), aj tak jeden prvok bol 999 a väčšinou vždy hneď na začiatku (jednociferný index).
Veľká vďaka za vysvetlenie, ale hlavne vyriešenie problému.
Offline
↑ SuchSoft:
ehm ehm, nechápačky.
Vytvoril som ešte jedno pole a vyplnil som ho tou istou premennou, dokonca v tom istom cykle.
Teraz bolo všade 10.
Tak som to vrátil do pôvodného stavu, všade je 10.
tak som vyhodil odtiaľ
Math.Round
a aký bol výsledok? No predsa c = s/d = 10 !!!
Môže takto zblbnúť prostredie, alebo čo? Nechápem.
Pracujem v .Net 4.0 v Visual C# Express 2010.
Takže všetko funguje ako má, len si niečo zo mňa vystrelilo. :-o
Offline
Stránky: 1