Ich denke hier ist es eher angemessen, als im Bug-Hunt zu posten. Anhand des Handbuches war mir schon klar, dass bei Berechnungen mit Multiplikation & Division bei sehr hohen bzw. sehr niedrigen Zahlen Abweichen auftreten können. Ich verwende solche math. Berechn. um Zahlen auf eine Nachkommastelle zu runden. Hier der Code:
Code:
var test=0.55;
test = int(10 * (test + 0.05)) / 10;
Dieser Code sollte normalerweise den Wert der Zahl von 0.55 auf 0.6 aufrunden (achtung: außerdem wurden nachfolgende Kommastellen abgetrennt) . In diesem Fall wird als Endwert 0.5 ausgegeben. Das hängt dadurch zusammen, dass die Engine beim Multiplizieren von 0.6 und 10 den Wert "5.996" ausgibt und dann der Rest nach dem Komma abgetrennt wird.
Lösung: Beim Erhöhen der Test-Variable anstatt 0.05 um 0.051 erhöhen.
Vorschlag: Eigentlich wurden im obigen Code keine extrem hohe und extrem niedrige Zahlen verwendet (aus dem Manual ), deshalb finde ich sollte dies evtl. verbessert werden. Zumindest in C-Lite. Selbst der Windows-Taschenrechner kann das besser, möglicherweise aber langsamer.