Heim >Web-Frontend >js-Tutorial >Warum erzeugt JavaScript ungenaue Gleitkomma-Ergebnisse und wie kann ich diese beheben?

Warum erzeugt JavaScript ungenaue Gleitkomma-Ergebnisse und wie kann ich diese beheben?

Susan Sarandon
Susan SarandonOriginal
2024-12-25 03:18:09975Durchsuche

Why Does JavaScript Produce Inaccurate Floating-Point Results, and How Can I Fix Them?

Genauigkeit von Gleitkommazahlen in JavaScript

Beim Umgang mit Gleitkommazahlen in JavaScript können Präzisionsprobleme auftreten. Dies wird im folgenden Beispiel deutlich:

function test() {
  var x = 0.1 * 0.2;
  document.write(x);
}
test();

Dieser Code sollte 0,02 ausgeben, aber stattdessen gibt er 0,020000000000000004 aus. Diese Diskrepanz ist auf Fehler bei der Genauigkeit der Gleitkomma-Multiplikation zurückzuführen.

Um dieses Problem zu beheben, beachten Sie die folgenden Ratschläge aus dem Gleitkomma-Handbuch:

1. Verwenden Sie einen speziellen Dezimaldatentyp:

Wenn präzise Dezimalberechnungen von entscheidender Bedeutung sind, insbesondere in Finanzanwendungen, sollten Sie die Verwendung eines bestimmten Dezimaldatentyps in Betracht ziehen.

2. Format für die Anzeige:

Wenn das Problem lediglich auf unerwünschte Dezimalstellen zurückzuführen ist, formatieren Sie Ihr Ergebnis und runden Sie es während der Anzeige auf die gewünschte Anzahl von Dezimalstellen.

3. Mit Ganzzahlen arbeiten:

In Fällen, in denen kein Dezimaldatentyp verfügbar ist, arbeiten Sie stattdessen mit Ganzzahlen. Führen Sie beispielsweise Geldberechnungen in Cent statt in Dollar durch. Dieser Ansatz ist jedoch arbeitsintensiver und hat seine Nachteile.

4. Verwenden Sie JavaScript-Bibliotheken:

Wenn das Problem weiterhin besteht, sollten Sie die Verwendung von JavaScript-Bibliotheken wie BigDecimal für JavaScript oder DecimalJS in Betracht ziehen, die effiziente Lösungen für präzise Dezimalberechnungen und die fehlerfreie Verarbeitung von Gleitkommazahlen bieten.

Das obige ist der detaillierte Inhalt vonWarum erzeugt JavaScript ungenaue Gleitkomma-Ergebnisse und wie kann ich diese beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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