es ist nicht ungefährlich, bei Variablen zunächst alle Int Werte miteinander zu multiplizieren, bevor man dividiert.
In diesem Falle mag es gehene, wenn die Werte aber anders aussehen, gibt's Ärger:
Mal mit etwas anderen (größeren) Zahlen:
(1000-87)*253/100.0
ergibt zunächst
913
* 253
=> => Speicherüberlauf,
da Int nur von -32768 bis 32767 gehen (Int-Arithmetik !),
und dann führt auch eine anschließende Division /100.0 zu nichts sinnvollerem.
Wenn man also den Wertebereich der Rechnung nicht für alle möglichen Fälle sicher überschauen und von vornherein eingrenzen kann, ist ein rechtzeitiges Typecasting nach float der einzig sichere Ausweg,
d.h. Konstanten als floats schreiben mit Dezimalpunkt oder Int-Variablen per (float) vorher explizit casten, bevor man mit ihnen weiter herumrechnet.
Lesezeichen