Ein Float (Fließkommazahl) ist eine Zahl mit Nachkommastellen. Er ist praktisch für Maße und tückisch für Geld.
- Float
Ein Datentyp für Zahlen mit Nachkommastellen, der den Wert als Näherung speichert.
Beispiel: „Die Breite in Zentimetern liegt als Float vor, der Preis besser nicht.“Auch: Fließkommazahl, Gleitkommazahl.
Herkunft: englisch floating point, der schwebende Punkt. Der Name sagt, wie der Wert abgelegt wird: Das Komma hat keinen festen Platz, sondern wird über einen Exponenten verschoben.
Warum 0,1 plus 0,2 nicht 0,3 ergibt
Weil der Rechner im Zweiersystem speichert und sich 0,1 darin nicht genau darstellen lässt, so wie sich ein Drittel im Zehnersystem nicht genau hinschreiben lässt. Was abgelegt wird, ist eine sehr nahe Näherung.
Aus zwei Näherungen wird beim Addieren eine dritte, und die weicht sichtbar ab. Das ist kein Fehler einer bestimmten Sprache. Jede Sprache, die den gängigen Standard für Fließkommazahlen benutzt, liefert dasselbe Ergebnis.
0.1 + 0.2; // 0.30000000000000004
0.1 + 0.2 === 0.3; // false
// Geld deshalb in Cent rechnen:
(10 + 20) / 100; // 0.3Wofür Floats trotzdem richtig sind
Für alles Gemessene. Breiten, Gewichte, Temperaturen, Koordinaten, Anteile. Dort ist der Wert selbst schon eine Näherung, und eine Abweichung in der sechzehnten Stelle spielt keine Rolle.
Die Faustregel lautet: gezählt wird mit Ganzzahlen, gemessen mit Floats. Geld wird gezählt, auch wenn ein Komma darin vorkommt.
Wie man damit umgeht
Zwei Fließkommazahlen werden nicht auf Gleichheit geprüft. Stattdessen wird verglichen, ob ihr Abstand kleiner ist als eine gewählte Schranke. Wer das einmal verinnerlicht hat, umgeht die häufigste Falle.
Für Geldbeträge gibt es den zweiten Weg: in der kleinsten Einheit rechnen. Das ist in unseren Shop-Projekten der Standard und spart die Diskussion über Rundungsregeln.