# c#: Rechnen



## MSuter (12. September 2002)

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


----------



## MSuter (12. September 2002)

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


----------



## goela (12. September 2002)

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!


----------



## MSuter (12. September 2002)

Vielen dank, mit deinem 2. beispiel konnte ich mein  Problem lösen!

Gruss MSuter


----------



## Alexander Schuc (12. September 2002)

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


----------



## goela (12. September 2002)

Ums zu vervollständigen!

100L  = Long
120UL = unsigned long
18.45e1 = für Exponent


----------

