Genauigkeit von float
-
huhu ihrs,
ich will einen Ball von A nach B bewegen, und wieder zurück (Java3D).
Die Schrittweite beträgt dabei 0.005fNun ist mir aufgefallen dass die float Zahl irgendwann plötzlich 1 Stelle mehr hat, und ich somit nicht mehr an der Position A anhalten kann, wenn ich zurück gehe.
-0.1621472 // Startposition
-0.14714721 // Aktuelle PositionWenn ich immer 0.005f auf die Startposition addiere, ist es für mich gerade ziemlich unlogisch warum dahinten auf einmal eine "1" bei der aktuellen Position auftaucht.
Kann man irgendwie festelegen, wie viele Nachkommastellen eine float Zahl haben soll?
Danke schonmal
-
Bei float Werten habe ich mich auch schonmal gewundert. Die Genauigkeit von Float soll 6 Stellen betragen. Das schließt natürlich nicht aus das in der 7. und 8. Stelle Zahlen stehen obwohl da keine sein sollten. Im Allgemeinen prüft man deswegen nicht auf Gleichheit sondern prüft ob der Abstand einen Wert unterschreitet. Also z.B. Betrag(AktuellePosition - StartPosition) < 0.0001
-
Tobiking2 schrieb:
Im Allgemeinen prüft man deswegen nicht auf Gleichheit sondern prüft ob der Abstand einen Wert unterschreitet.
hihi, das ist eine gute Idee, bin ich selber noch nicht drauf gekommen.
Ich habe das ganze nun auch einmal mit "double" getestet, und da habe ich die Probleme (bis jetzt) nicht.
thx @ Tobiking2
-
Tobiking2 schrieb:
Bei float Werten habe ich mich auch schonmal gewundert. Die Genauigkeit von Float soll 6 Stellen betragen.
Ne, wieviele Stellen das sind kannst du nicht sagen. Das liegt einfach an der Binärdarstellung von floats. http://en.wikipedia.org/wiki/Floating_point Doubles haben übrigens das gleiche Problem.
-
Tobiking2 schrieb:
Doubles haben übrigens das gleiche Problem.
jop gerade aufgefallen