Thomas Bandt

Über mich | Kontakt | Archiv

Division in C# vs. VBScript

Ich war es von VBScript gewohnt mir keine großen Gedanken über Datentypen etc. zu machen - und genau das ist mir eben in C# zum Verhängnis geworden.

Rechnet man 50/286 liefert VBS automatisch das Korrekte Ergebnis 0,17482517482517482517482517482517 zurück.

Rechnet man nun aber in C# mit zwei Integern, so funktioniert das nicht.

Falsch: (decimal)(maxWidth/fileWidth)

Der Grund: Wenn man zwei Integers (maxWidth und fileWidth) dividiert, so liefert das auch einen Integer als Ergebnis - bei dieser Operation also 0. Da nützt auch das casten in decimal nicht mehr, denn 0 bleibt 0.

Richtig: (decimal)((decimal)maxWidth/(decimal)fileWidth)

Man muss also bereits mit den richtigen Datentypen rechnen, um am Ende auch das richtige Ergebnis zu bekommen, sprich die verwendeten Variablen schon vor bzw. während der Operation casten.



« Zurück  |  Weiter »