Hi und vielen vielen Dank für die schnellen Antworten!
Wenn ich es so rechne funktioniert es : geschw_rechts = (((-100.00 - (-83)) / (-100)) * 253);
also einfach hinter eine Zahl ".00" anfügen für float.
Vielen Dank
Hi und vielen vielen Dank für die schnellen Antworten!
Wenn ich es so rechne funktioniert es : geschw_rechts = (((-100.00 - (-83)) / (-100)) * 253);
also einfach hinter eine Zahl ".00" anfügen für float.
Vielen Dank
Mal ganz davon ab, dass deine Formel ziemlich umständlich geschrieben ist. Besser wäre wohl sowas:
geschw_rechts = (100-83)*253/100.00;
Ist genau dasselbe, nur ohne die ganzen Vorzeichen. Ich weiß jetzt nicht, ob der erste Teil noch mit Integer gerechnet wird und das Ergebnis dann beim Teilen durch 100.00 erst in Float umgewandelt, jedenfalls würde es so effizienter gerechnet werden. Aber zumindest finde ich es so übersichtlicher. Achja, sind das alles feste Zahlen oder werden Teile davon mal durch Variablen ersetzt werden? Dann wäre es sinnvoll, alle konstanten Werte zu einer Konstanten zusammenzufassen, die dann nur abgerufen werden muss.
AI - Artificial Idiocy
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