1unitedpower: sqrt unterschiedliche Ergebnisse auf unterschiedlichen Webseiten

Beitrag lesen

JavaScript kennt nur 64-bit Floats

Ja, das kann man nachlesen. Aber wie ist das mit den Operationen? Die Intel FPU hat zumindest früher mal intern mit 80-bit Registern gerechnet. Muss man damit rechnen, dass es bei Intel, AMD oder Qualcomm Hardware unterschiedliche Ergebnisse bei Float-Operationen gibt?

Die Operationen sind auch im IEEE-754-Standard festgelegt. Eine Engine, die da Kovertierungen vornimmt, die das Ergebnis verfälschen, ist schlicht und simpel fehlerhaft. In der Praxis weiß ich auch von keiner Engine, die sich da abweichend vom Standard verhält.

Man kann aber auch nach jedem Rechenschritt die Kugelpositionen auf vier Stellen runden (heißt: wenn man die Koordinaten von 0-9999 festlegt, entfernt man einfach die Nachkommastellen). Damit hat man zumindest Mikroabweichungen im Griff. Die Angaben zu Geschwindigkeit und Drall sollte man ebenfalls entsprechend runden.

Das verschlimmert es nur, man büßt unnötigerweise Präzision ein. Wenn man diesen Weg beschreiten möchte, müsste man auf eine fixed-point Arithmetik wechseln, um einen positiven Effekt zu haben, aber so einen Datentypen kennt JS nicht.

Der Witz ist ja: Es fällt niemandem auf, wenn die simulierte Realität nicht ganz exakt ist.

Kommt darauf an, ein instablier Algorithmus kann durchaus schwere Fehler, wie Auslöschung zur Folge haben.