Spaß Tatsache - Float-Typ ist nicht präzise. es kam aus der Theorie der großen Zahlen, und nach dem Muster ist es Annäherung. das ist der Grund, warum mehrere Sprachen auch Typen wie Geld etc. anbieten und für Sprachen, die das nicht tun, berechnen wir alle monetären Dinge auf ganzen Zahlen. es ist nicht Javascript bezogen "Bug", es ist Informatik "Feature" :)
wie man monetäre Zeug auf ganze Zahlen zu berechnen? Nun, Sie müssen einen neuen Typ erstellen/emulieren. allgemeine Idee ist
- konvertiert alle Daten aus Float auch alle Berechnungen auf ganze Zahlen (kein Schwimmer gemischt werden kann, oder das Ergebnis wird auch zu schweben umgewandelt werden) durchführen, indem 100
- auf ganzzahlige Multiplikation
- bei das Ende (in den meisten Fällen auf die Datenausgabe/Benutzeroberfläche ist) von 100
ja, in 21 Jahrhundert jeden Wert teilen Sie es einfach dumm aussieht, aber es gibt keine Magie, die Sie verwenden können, wenn Ihr Werkzeug (JS) hat keinen dedizierten Datentyp für monetäre Berechnungen. Du musst es bauen.
ist JS die einzige Sprache in diesem Projekt? Wenn es zum Beispiel einige SQL db gibt, haben die meisten von ihnen dedizierte Währungstypen, so dass Sie alle Ihre Berechnungen auf Datenbankseite vornehmen können.
Probieren Sie 'percent_discount_final = Math.round (Wert von einigen Formularfeld * Prozent Rabatt);' –
Das funktioniert nicht. Wenn meine Summe 382,50 ist und ich 10% davon kalkuliere, zeigt es das Ergebnis als 38,20 –
'(10 * 0,01 * 382,50) .toFixed (2)' - das gibt 38,25 auf der Konsole zurück, habe es gerade versucht –