Bei der täglichen Programmierung verwenden wir häufig verschiedene Programmiersprachen, um verschiedene numerische Operationen abzuwickeln, von denen JavaScript zweifellos die am weitesten verbreitete ist. Bei komplexen numerischen Berechnungen kann es jedoch in einigen Extremfällen zu Situationen kommen, in denen die Operationsergebnisse an Präzision verlieren. Warum passiert das? Wie kann ein Verlust der Berechnungsgenauigkeit vermieden werden?
console.log(0.1 + 0.2); // 0.30000000000000004
Da Binärzahlen 0,1 und 0,2 nicht genau darstellen können, ist das Ergebnis ihrer Addition in JavaScript ungenau und es gibt zusätzliche Ziffern nach dem Dezimalpunkt.
2.1 Verwenden Sie Ganzzahlen zur Berechnung
Bei der Durchführung komplexer Operationen können wir Dezimalzahlen zur Berechnung in Ganzzahlen umwandeln und schließlich die Ergebnisse in Dezimalzahlen umwandeln. Der folgende Code kann beispielsweise 0,1 und 0,2 jeweils mit 10 multiplizieren, dann die Ergebnisse addieren und schließlich das Ergebnis durch 10 dividieren:
console.log((0.1 * 10 + 0.2 * 10) / 10); // 0.3
2.2 Verwendung der toFixed()-Funktion
Der Number-Typ in JavaScript stellt eine toFixed()-Methode bereit das eine Zahl mit einer bestimmten Genauigkeit in eine Dezimalzahl umwandelt (die Anzahl der in Klammern gesetzten Dezimalstellen bleibt erhalten). Im folgenden Code behält die Funktion toFixed() beispielsweise zwei Dezimalstellen bei und erhält schließlich eine Gleitkommazahl mit einer Genauigkeit von 0,30.
console.log((0.1 + 0.2).toFixed(2)); // 0.30
2.3 Präzision erweitern
Die Genauigkeit von Operationen in JavaScript kann erhöht werden, um Präzisionsverluste zu vermeiden. Ein üblicher Ansatz besteht darin, die Dezimalzahl in eine ganze Zahl umzuwandeln und dann die Berechnung durchzuführen. Eine weitere Möglichkeit ist die Verwendung der BigNumber-Bibliothek in JavaScript. Diese Bibliothek bietet hochpräzise numerische Typen, die die Genauigkeit von Operationen erheblich verbessern können. Der folgende Code kann beispielsweise die BigNumber-Bibliothek verwenden, um das Problem des Verlusts der Operationsgenauigkeit zu lösen:
var BigNumber = require('bignumber.js'); var x = new BigNumber("0.1"); var y = new BigNumber("0.2"); console.log(x.plus(y).toString()); // "0.3"
Dieser Artikel fasst die Ursachen und gängigen Vermeidungsmethoden für den Verlust der Operationsgenauigkeit in JavaScript zusammen. Bei komplexen numerischen Berechnungen müssen wir spezifische Probleme sorgfältig analysieren und geeignete Methoden anwenden, um Genauigkeitsverluste zu vermeiden und die Korrektheit des Programms sicherzustellen.
Das obige ist der detaillierte Inhalt vonWas passiert, wenn JavaScript-Operationen an Präzision verlieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!