Pouze tento týden sleva až 80 % na e-learning týkající se PHP. A zároveň využij akce až 30 % zdarma při nákupu e-learningu. Více informací.
Hledáme asistenty pro kurzy programování - pohodová brigáda. Více info
discount 30
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:24.9.2012 19:17

funkce

int i;
if (int.TryParse(textBox1.Text, out i))
{
     p_percentage = ((i / songsDuration) * 100);
}

mi nastavuje p_percentage na nulu, nemůžu najít chybu, řekl bych že po matematické stránce je to správně,
ještě bych měl dodat že

textBox1.Text = //zkoušel jsem 12,23,150,200,230
songDuration = 235;  // int
p_percentage = 0;    // double

nastaveno od vytvoření formu

pokaždé když textBox1.Text je menší než songDuration tak mi to nastaví p_percentage na nulu, když je větší tak se p_percentage zaokrouhlí na násobek 100

Odpovědět
24.9.2012 19:17
Mo8ilε 15 Ѐλđ
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:24.9.2012 19:44

Protože dělíš celočíselně, vždy ti vyjde 0 a tu vynásobíš 100.

Zkus tohle:

(i / (float)songsDuration) * 100
Nahoru Odpovědět
24.9.2012 19:44
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Theodor Johnson
matesax:24.9.2012 19:46

Správně:

float i, songsDuration = 235, p_percentage = 0;

if (float.TryParse(textBox1.Text, out i))
    p_percentage = i / songsDuration * 100;
Editováno 24.9.2012 19:47
 
Nahoru Odpovědět
24.9.2012 19:46
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na David Čápka
Theodor Johnson:24.9.2012 19:53

díky, to přetypováni int na float číslo mi pomohlo, ovšem nechápu proč číslo ve formátu int je nutné přetypovat na float, když zůstane stejné

Nahoru Odpovědět
24.9.2012 19:53
Mo8ilε 15 Ѐλđ
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:24.9.2012 20:10

Když dělíš 2 celá čísla, C# předpokládá, že je chceš dělit celočíselně. Může to být matoucí, protože je ukládáš do float, ale stále to je dělení 2 celých čísel. Stejně tak ti dělení 2 floatů vrátí float a to i když ta čísla nebudou mít desetinná místa.

Nahoru Odpovědět
24.9.2012 20:10
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Theodor Johnson
matesax:24.9.2012 20:11

Bylo ti to již vysvětleno - způsobuješ tím celočíselné dělení - tedy číslo, které vyjde, je menší než nula, což je celočíselně 0...

Editováno 24.9.2012 20:11
 
Nahoru Odpovědět
24.9.2012 20:11
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:24.9.2012 20:19

Díky za pomoc.

Nahoru Odpovědět
24.9.2012 20:19
Mo8ilε 15 Ѐλđ
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 7 zpráv z 7.