Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Theodor Johnson
Tvůrce
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 Hartinger
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Hartinger: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
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
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
Tvůrce
Avatar
Odpovídá na David Hartinger
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 Ѐλđ
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Hartinger: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
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
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
Tvůrce
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.