9. März 2024 • Ekkart • Computer, JavaScript, Programmierung • Computer
Es ist manchmal ein Kreuz.
Gibt man in LibreOffice Calc oder Excel ein: =3.9+0.05
oder =3,9+0,05
, je nachdem, ob Komma oder Punkt für “Kommazahlen” genutzt werden, ist das Ergebnis: 3.95
oder 3,95
Gibt man Gleiches in JavaScript ein, kommt 3.9499999999999997
raus.
Nachprüfen? Browser Deiner Wahl öffnen, mit Strg+Shift+I in den Entwicklermodus gehen, dort auf “Console” klicken, dann eingeben:
>> console.log(3.9+0.05)
3.9499999999999997
Wie kann man das jetzt umgehen? Indem ein Korrekturfaktor eingezogen wird, z.B. 1000:
>> console.log(((3.9*1000)+(0.05*1000))/1000)
3.95
Warum das passiert, warum der Faktor hilft und wie groß er sein sollte? Hausaufgabe 😄
Daher gibt es jetzt folgende Hilfskonstrukte in meinem Code:
const CORRECTION_FACTOR = 100000
function addCorrectedFloat(num1, num2) {
return ((num1 * CORRECTION_FACTOR) + (num2 * CORRECTION_FACTOR)) / CORRECTION_FACTOR;
}