Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:

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

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:

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
Přecházím na "Cross-Platform Development"
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:

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

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:

Díky za pomoc.

Nahoru Odpovědět 24.9.2012 20:19
Přecházím na "Cross-Platform Development"
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.