float vs. double
-
Vielen Dank, das hat mir schonmal weitergeholfen.
Noch eine Frage: Ist float geeignet um die Positionen in einem begrenzten kontinuierlichen Koordinatensstem (sagen wir, von 0/0 bis 1/1, jeder Wert dazwischen ist erlaubt) zu speichern? Nach dem, was ich gelesen habe, wird die Position gegen 0/0 immer genauer und gegen den Rand hin immer ungenauer, was etwas seltsam ist.
-
tripl3 schrieb:
Vielen Dank, das hat mir schonmal weitergeholfen.
Noch eine Frage: Ist float geeignet um die Positionen in einem begrenzten kontinuierlichen Koordinatensstem (sagen wir, von 0/0 bis 1/1, jeder Wert dazwischen ist erlaubt) zu speichern? Nach dem, was ich gelesen habe, wird die Position gegen 0/0 immer genauer und gegen den Rand hin immer ungenauer, was etwas seltsam ist.
Wenn du dir dessen bewusst bist: Klar, warum nicht? Ich verstehe aber nicht, was du da dran seltsam findest. Das ist doch in der Regel genau das, was man möchte.
Falls du unbedingt gleiche Abstände zwischen Werten brauchst, dann ist float aber nicht das richtige, sondern eine Ganzzahl. Das ist dann jedoch keine gute Annäherung an das Kontinuum mehr, sondern bloß ein diskretes Gitter mit feiner Unterteilung.
-
Ich finde es komisch, weil eigentlich jeder Ort gleich sein sollte.
Aber müsste ein int (32 Bit) nicht feiner unterteilen als ein float?
-
tripl3 schrieb:
Ich finde es komisch, weil eigentlich jeder Ort gleich sein sollte.
Es ist nicht komisch, sondern eine wunderbare Eigenschaft. Wir wollen mit Floats ganz kleine als auch ganz grosse Zahlen darstellen, haben dazu aber z.B. nur 32 Bits zur Verfuegung, d.h. wir koennen nur endlich viele Werte darstellen.
Bei kleinen Werten ist uns die Genaugkeit sehr wichtig, da schon kleine Fehler grosse Auswirkungen haben koennen (0.0001 ist stark verschieden von 0.0002).
Wenn wir mit grossen Zahlen rechnen, ist die Genauigkei etwas weniger wichtig (10^9 + 0.0001 ist praktisch das gleiche wie 10^9 + 0.0002). Aber wir koennen die grossen Zahlen darstellen und mit ihnen rechnen.
Deswegen macht es Sinn, dass je nach groesse die Zahlen unterschiedlich genau dargestellt werden. Die schoene Eigenschaft ist sogar, dass die Genauigkeit mit jeder Zweierpotenz abnimmt
-
Es ist nicht komisch, weil die Genauigkeit am Ende der zahl abnimmt.
Die ersten 7 Stellen sind genau (laut Spezifikation), hast du eine Zahl die schon 4 Stellen vor dem Komma hat, dann sind die Nachkommastellen nicht mehr so genau wie bei einer Zahl, die nur 1 Vorkommastelle hat.0.1234567 vs. 12345.67xxxxx
-
tripl3 schrieb:
Ich finde es komisch, weil eigentlich jeder Ort gleich sein sollte.
Wieso? Ist es nicht interessanter zu wissen, ob ein Wert 0.000000000000000 oder 0.000000000000001 oder 0.000000000000002 ist, als zu wissen, ob ein Wert 99999999.000000000000000 oder 99999999.000000000000001 oder 99999999.000000000000002 ist?
Aber müsste ein int (32 Bit) nicht feiner unterteilen als ein float?
Kommt drauf an, in welchem Bereich
. Der float kann nahe 0 fast beliebig fein unterteilen. Dafür aber insgesamt nur mit 23 Bit Genauigkeit.
-
Das entspricht doch auch dem intuitivem Umgang mit Zahlen unterschiedlicher Größenordnung. "In etwa hundert" ist genauer als "In etwa zwanzig Millionen".
-
SeppJ schrieb:
tripl3 schrieb:
Ich finde es komisch, weil eigentlich jeder Ort gleich sein sollte.
Wieso? Ist es nicht interessanter zu wissen, ob ein Wert 0.000000000000000 oder 0.000000000000001 oder 0.000000000000002 ist, als zu wissen, ob ein Wert 99999999.000000000000000 oder 99999999.000000000000001 oder 99999999.000000000000002 ist?
In einer Karte nicht.
-
tripl3 schrieb:
SeppJ schrieb:
tripl3 schrieb:
Ich finde es komisch, weil eigentlich jeder Ort gleich sein sollte.
Wieso? Ist es nicht interessanter zu wissen, ob ein Wert 0.000000000000000 oder 0.000000000000001 oder 0.000000000000002 ist, als zu wissen, ob ein Wert 99999999.000000000000000 oder 99999999.000000000000001 oder 99999999.000000000000002 ist?
In einer Karte nicht.
Wieso?
*Edit
Hat sich erledigt, durch den Beitrag von SeppJ weiss ich jetzt worauf du hinaus willst
-
tripl3 schrieb:
SeppJ schrieb:
tripl3 schrieb:
Ich finde es komisch, weil eigentlich jeder Ort gleich sein sollte.
Wieso? Ist es nicht interessanter zu wissen, ob ein Wert 0.000000000000000 oder 0.000000000000001 oder 0.000000000000002 ist, als zu wissen, ob ein Wert 99999999.000000000000000 oder 99999999.000000000000001 oder 99999999.000000000000002 ist?
In einer Karte nicht.
Ja. Da sind tatsächlich Ganzzahlen besser, da es sich effektiv eher um ein Gitter als um ein Kontinuum handelt. Dadurch wird die Haupteigenschaft der Fließkommazahlen, auch 10^100 oder 10^-100 problemlos darstellen zu können, kaum genutzt.
Alternativ kann man natürlich auch mit x-99999999 rechnen, nachdem man festgestellt hat, dass man sich in diesem Sektor befindet.