Heim > Web-Frontend > Front-End-Fragen und Antworten > Was passiert, wenn JavaScript-Operationen an Präzision verlieren?

Was passiert, wenn JavaScript-Operationen an Präzision verlieren?

PHPz
Freigeben: 2023-04-21 09:23:48
Original
1626 Leute haben es durchsucht

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?

  1. Der Grund für den Verlust der Operationsgenauigkeit
    In JavaScript ist einer der Hauptgründe für den Verlust der Operationsgenauigkeit die Ungenauigkeit von Gleitkommazahlen. In JavaScript gibt es nur einen Zahlentyp, den Zahlentyp, der eine 64-Bit-Gleitkommazahlendarstellung verwendet. Der maximal darstellbare Wert ist 1,7976931348623157e+308, der Mindestwert beträgt jedoch 5e-324 von Dezimalzahlen, Gleitkommazahlen Die binäre Darstellung kann oft nicht genau dargestellt werden, was zu einem Präzisionsverlust führt. Schauen Sie sich das folgende Beispiel an:
console.log(0.1 + 0.2); // 0.30000000000000004
Nach dem Login kopieren

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.

  1. So vermeiden Sie den Verlust der Berechnungsgenauigkeit
    Es gibt viele Möglichkeiten, den Verlust der Berechnungsgenauigkeit zu vermeiden. Hier sind einige gängige Methoden.

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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"
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage