Wenn ich die Formel umstelle kommt am Ende raus:
1 | res = 200 + ((69 - x) * (y - 200)) / 46
|
Du schreibst float soll nicht verwendet werden. Daraus schließe ich, es
soll prinzipiell schon genau sein. Die Multiplikation/Division mit 1000
soll keine implizite Rundung erzeugen, sondern nur ein bischen vor
Genauigkeitsverlust schützen.
Generell gilt wenn man mit Integern rechnet: So lange der Datentyp groß
genug ist, zuerst alle Multiplikationen, erst am Schluss
kleinerdividieren. Dann dividiert man auch die vorher ggf. gemachten
Rundungsfehler klein.
Zur Vorzeichenproblematik würde ich auch einfach auf signed gehen. (Aber
prüfen, ob dann der Wertebereich für y noch reicht.)
Die Mühe, die Konstante x von Hand in die Formel reinzuziehen, würde ich
mir definitiv nicht machen. Das kann der compiler genau so gut.
Guter Stil wäre es aber imho, im Code auch zu schreiben, dass x eine
Konstante ist:
In manchen Fällen hilft const auch dem Compiler. Es dokumentiert aber
auf jeden Fall die Intention des Programmierers. Und erzeugt Warnungen,
wenn man sie doch irgendwo versehentlich ändert.
Ich würde auch y in der Methodensignatur const machen, gebe aber zu dass
man da anderer Meinung sein kann.