Schreiben Sie zuerst eine Demo, um das Problem zu reproduzieren. Ich verwende eine JS -Online -Testumgebung [Open]
Schreiben Sie die Funktion displayNum () neu
Funktion displayNum () {var num = 22.77; alert (num + 10);}Klicken Sie auf die Schaltfläche "Schaltfläche anzeigen" angezeigt.
Nicht alle Zahlen haben dieses Phänomen, mit Ausnahme von 22,99 2.777, es scheint, dass diese Zahlen nicht besonders sind.
Ich habe einige Informationen überprüft. Einer ist der Fehler in der Berechnung der JS -Schwimmpunkte, und das andere hängt mit der endgültigen Umwandlung des Computers in die binäre Berechnung zusammen. Warum haben nicht alle Dezimalstellen dieses Phänomen? Ich weiß im Moment nicht. Ich werde tiefer gehen, wenn ich Zeit habe.
Es gibt jetzt zwei Lösungen. Die erste besteht darin, die Methode JS .toFixed (N) zu verwenden, um N-Digit-Dezimalstellen direkt zu erhalten. Ich persönlich denke, diese Methode wird einige Probleme in der Datengenauigkeit haben. Wenn die Anforderungen an die Datengenauigkeit nicht hoch sind, können Sie sie verwenden. Die zweite Methode besteht darin, Ihre eigene JS -Betriebsmethode zu schreiben.
Das Folgende ist eine benutzerdefinierte Additionsfunktion. Das Hinzufügen dieser Methode vermeidet die oben genannten Probleme.
Funktion addnum (num1, num2) {var sq1, sq2, m; try {sq1 = num1.toString (). split (".") [1] .Length;} catch (e) {sq1 = 0;} try {sq2 = num2.toString (). ".") [1]. catch (e) {sq2 = 0;} m = math.pow (10, math.max (SQ1, SQ2));Natürlich kann es auch als Alarm geschrieben werden ((num * 3+10 * 3) /3); Auf diese Weise wird es in n keine Dezimalstellen mehr geben.
Alarm ((num * 3+10 * 3) /3); und alarm (num+10); unterscheiden sich von Alarm (num+10); Diese beiden Möglichkeiten zum Schreiben von Computern, um in die untere Schicht in binäre Operationen umzuwandeln. Vielleicht ist dies der Grund für die oben genannten Probleme.
Der obige Artikel über die JS -Dezimalzahlung des Dezimalpunkts und das Anzeigen mehrerer Dezimalstellen ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.