c#: Rechnen

MSuter

Erfahrenes Mitglied
Wahrscheinlich hab ich mal wieder n Brett vorm Kopf!! Kan mir irgendjemand sagen weshalb hier die variable position den Wert 0 enthält?

float position = this.hScrollPosition.Maximum / sekundentotal * sekundenvorbei

this.hScrollPosition.Maximum = 100
sekundentotal = 283
sekundenvorbei = 5

Ich blick da nicht mehr durch

Gruss MSuter
 
Ich blick nicht mehr durch, sogar hier wird 0 ausgegeben!!

float position = 100 / 380 * 380;
MessageBox.Show(position.ToString());

was soll dieser mist?

Gruss Marco
 
Zuletzt bearbeitet:
Nun die Erklärung ist ganz einfach! Der Compiler interpretiert die Werte als Integer!

Nun Deine Rechnung wird wie folgt gerechnet:
100/380 = 0.263.... da es als Int gerechnet wird folgt daraus 0! Komisch ist aber so!

0 * 380 = 0!

Nun probiere mal folgendes!
float position = 100.0 / 380.0 * 380.0;

Mit .0 weiss der Compiler, dass es eine Floatzahl ist (zumindest bei C/C++)!

Wenn's in C# so nicht gehen sollte, dann kannst Du immer noch casten!
float position = ((float) 100 / (float)380) * 380;

Wahrscheinlich sind Deine Variablen vom Typ int! Also casten oder gleich als float deklarieren!
 
Hallo,..

um dir die schreibarbeit ein wenig zu verkürzen:

anstatt jeden wert auf diese weise zu casten kannst du hinter den Integer-Wert ein kleines f setzen..

float position = (100f / 380f) * 380f;

so sollte es auch gehen.. und wenn du viele solcher Rechnungen hast verkürzt es sich doch ein wenig =)


mfg,
crazy-weasel
 

Neue Beiträge

Zurück