Heim > Web-Frontend > js-Tutorial > JavaScript auf ecimale Stellen runden: Eine vollständige Anleitung

JavaScript auf ecimale Stellen runden: Eine vollständige Anleitung

Patricia Arquette
Freigeben: 2025-01-08 07:34:40
Original
808 Leute haben es durchsucht

Präzision ist in JavaScript von entscheidender Bedeutung, und die Beherrschung der JavaScript-Rundung auf 2 Dezimalstellen ist für genaue Berechnungen und saubere Formatierung unerlässlich. In diesem Blog werden wir Methoden wie Math.round und Math.floor in JavaScript untersuchen. Als Bonus besprechen wir auch, wie man Zahlen für fortgeschrittene Szenarien auf die n-te Dezimalstelle rundet!

JavaScript Round to ecimal Places: A Complete Guide

Die Bedeutung des Rundens von Zahlen in JavaScript

Warum ist Rundung wichtig?

Das Runden von Zahlen ist ein entscheidender Aspekt bei der Arbeit mit Zahlen in der Programmierung. In JavaScript auf 2 Dezimalstellen runden vereinfacht es Berechnungen, verbessert die Lesbarkeit und sorgt für Genauigkeit in realen Anwendungen. Beispielsweise erfordern Finanztransaktionen, Prozentsätze und Messungen häufig gerundete Werte, um zu genaue Zahlen zu vermeiden, die zu Verwirrung oder Interpretationsfehlern führen können.

Warum sich auf zwei Dezimalstellen konzentrieren?

Wenn wir über das Runden auf zwei Dezimalstellen in JavaScript sprechen, liegt das daran, dass zwei Dezimalstellen in Szenarien wie Währungsberechnungen Standard sind. Eine Genauigkeit über zwei Dezimalstellen hinaus ist unnötig und kann zu Rundungsfehlern oder Inkonsistenzen führen. Beispielsweise werden die Preise normalerweise mit 10,99 $ statt mit 10,9876 $ angezeigt. Indem wir uns in JavaScript auf das Runden auf zwei Dezimalstellen konzentrieren, stellen wir Genauigkeit, Praktikabilität und benutzerfreundliche Ergebnisse sicher.

Verschiedene Möglichkeiten, eine Zahl in JavaScript auf zwei Dezimalstellen zu runden

Die grundlegenden Methoden

Beim Runden von Zahlen in JavaScript umfassen die einfachsten Ansätze die Verwendung der integrierten Methoden Math.round und Math.floor. Diese Methoden sind einfach zu implementieren und funktionieren in den meisten Fällen gut, bringen jedoch einige Randfälle und Fallstricke mit sich, die es zu berücksichtigen gilt.

Verwenden von Math.round

Math.round ist die einfachste Methode, eine Zahl auf die nächste ganze Zahl zu runden. Um auf zwei Dezimalstellen zu runden, können Sie die Zahl skalieren, runden und wieder zurückskalieren.

const roundToTwo = (num) => Math.round(num * 100) / 100;

console.log(roundToTwo(12.345)); // Output: 12.35
console.log(roundToTwo(12.344)); // Output: 12.34
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Randfall:

Wenn die Zahl genau in der Mitte zwischen zwei Werten liegt, rundet Math.round immer auf die nächste gerade Zahl. Dies kann in bestimmten Situationen zu unerwarteten Ergebnissen führen.

console.log(roundToTwo(12.345)); // Output: 12.35
console.log(roundToTwo(12.335)); // Output: 12.33
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Verwendung von Math.floor

Math.floor rundet immer auf die nächste ganze Zahl ab. Um auf zwei Dezimalstellen zu runden, wenden wir denselben Skalierungstrick an.

const floorToTwo = (num) => Math.floor(num * 100) / 100;

console.log(floorToTwo(12.345)); // Output: 12.34
console.log(floorToTwo(12.349)); // Output: 12.34
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Falle:

Math.floor ist nicht ideal, wenn Sie ein Standardrundungsverhalten benötigen. Es kann zu Ungenauigkeiten bei Zahlen kommen, die aufgerundet werden sollten.

const roundToTwo = (num) => Math.round(num * 100) / 100;

console.log(roundToTwo(12.345)); // Output: 12.35
console.log(roundToTwo(12.344)); // Output: 12.34
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wichtige Erkenntnisse:

  • Math.round eignet sich hervorragend zum Standardrunden, kann sich jedoch bei Zahlen genau in der Mitte zwischen zwei Werten unerwartet verhalten.
  • Math.floor ist ideal, wenn Sie immer abrunden möchten, aber möglicherweise nicht die Standard-Rundungsanforderungen erfüllen.
  • Beide Methoden erfordern eine Skalierung, was manchmal zu Problemen mit der Gleitkomma-Präzision führen kann.

Beispiel für ein Problem mit der Gleitkomma-Präzision

console.log(roundToTwo(12.345)); // Output: 12.35
console.log(roundToTwo(12.335)); // Output: 12.33
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies geschieht, weil 1,005 * 100 aufgrund der Gleitkomma-Arithmetik zu 100,49999999999999 wird, was dazu führt, dass Math.round falsch rundet. Wir werden solche Probleme in den nächsten Abschnitten mit fortgeschrittenen Methoden angehen!

Die fortgeschrittenen Methoden

Zusätzlich zu klassischen Methoden wie Math.round und Math.floor bietet JavaScript erweiterte Techniken für genaues Runden. Diese Methoden beseitigen häufige Fallstricke beim Runden auf 2 Dezimalstellen in JavaScript und bieten robuste Lösungen, einschließlich Anpassungen für Gleitkommaarithmetik, objektorientierte Ansätze und benutzerdefinierte Flexibilität.

Verwenden von Number.EPSILON für Gleitkomma-Präzision

Die Gleitkomma-Arithmetik von JavaScript kann zu unerwarteten Ergebnissen führen, insbesondere beim Runden auf 2 Dezimalstellen in JavaScript. Das Hinzufügen von Number.EPSILON – dem kleinstmöglichen Wert, der zu 1 addiert werden kann, um ein Ergebnis größer als 1 zu erhalten – hilft, diese Fehler zu mildern.

const floorToTwo = (num) => Math.floor(num * 100) / 100;

console.log(floorToTwo(12.345)); // Output: 12.34
console.log(floorToTwo(12.349)); // Output: 12.34
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Warum es besser funktioniert:

Number.EPSILON berücksichtigt winzige Ungenauigkeiten bei Gleitkommaberechnungen und verbessert die Präzision in JavaScript. Runden Sie bei schwierigen Zahlen wie 1,005 oder 1,255 auf 2 Dezimalstellen.

Verwenden des Intl.NumberFormat-Konstruktors

Die Intl.NumberFormat-API ist ein vielseitiger Konstruktor zum Formatieren von Zahlen gemäß länderspezifischen Konventionen. Es ist besonders hilfreich für das Runden auf 2 Dezimalstellen in JavaScript und bietet anpassbare Optionen für Dezimal- und Bruchstellen.

console.log(floorToTwo(12.349)); // Output: 12.34 (Expected: 12.35)
Nach dem Login kopieren

Warum es besser funktioniert:

  • Bietet Präzision und Lokalisierung für die JavaScript-Rundung auf 2 Dezimalstellen.
  • Unterstützt die Anpassung durch Eigenschaften wie MaximumFractionDigits.

Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen sind eine großartige Möglichkeit, bestimmte Szenarios für die JavaScript-Rundung auf 2 Dezimalstellen zu bewältigen. Die Verwendung der Exponentialschreibweise ermöglicht beispielsweise eine präzise Kontrolle über Dezimalstellen.

console.log(roundToTwo(1.005)); // Output: 1 (Expected: 1.01)
Nach dem Login kopieren

Warum es besser funktioniert:

Benutzerdefinierte Funktionen können Randfälle verarbeiten und die Genauigkeit der JavaScript-Rundung auf 2 Dezimalstellen gewährleisten, selbst in komplexen Szenarien.

Wichtige Erkenntnisse:

  • Number.EPSILON behebt Gleitkommafehler für Präzisionsrundung.
  • Intl.NumberFormat ermöglicht die Lokalisierung und flexible Rundung für Zahlen.
  • Benutzerdefinierte Funktionen bieten maßgeschneiderte Lösungen für die JavaScript-Rundung auf 2 Dezimalstellen.
  • Erweiterte Bibliotheken wie Decimal.js gewährleisten eine hohe Genauigkeit für Anwendungen, die extreme Präzision erfordern.

Bonus: Runden auf die N-te Dezimalstelle in JavaScript

Zusätzlich zum Runden von Zahlen auf zwei Dezimalstellen gibt es Situationen, in denen Sie möglicherweise auf eine beliebige Anzahl von Dezimalstellen (n-te Dezimalstelle) runden müssen. Dies erfordert einen robusten, flexiblen Ansatz, der Gleitkomma-Präzisionsfehler minimiert.

Eine benutzerdefinierte Funktion zum Runden auf N Dezimalstellen

Die folgende Funktion skaliert die Zahl, rundet sie und skaliert sie dann wieder herunter. Es enthält auch Number.EPSILON, um Gleitkomma-Ungenauigkeiten zu verarbeiten.

const roundToTwo = (num) => Math.round(num * 100) / 100;

console.log(roundToTwo(12.345)); // Output: 12.35
console.log(roundToTwo(12.344)); // Output: 12.34
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

So funktioniert es:

  1. Skalieren der Zahl: Die Zahl wird mit 10^n multipliziert, um den Dezimalpunkt um n Stellen nach rechts zu verschieben.
  2. Rundung: Die skalierte Zahl wird mit Math.round gerundet, wobei Number.EPSILON hinzugefügt wird, um Gleitkommaprobleme zu vermeiden.
  3. Rückskalierung: Der gerundete Wert wird durch 10^n geteilt, um den Dezimalpunkt wieder an seine ursprüngliche Position zu bringen.

Hauptvorteile:

  • Präzision: Behandelt Grenzfälle wie 1,005 oder 12,99999 korrekt.
  • Flexibilität: Kann durch einfache Angabe von n auf eine beliebige Anzahl von Dezimalstellen gerundet werden.
  • Fehlerfrei: Enthält Number.EPSILON, um Rundungsfehler zu minimieren, die durch Gleitkomma-Arithmetik verursacht werden.

Umgang mit Randfällen:

console.log(roundToTwo(12.345)); // Output: 12.35
console.log(roundToTwo(12.335)); // Output: 12.33
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vergleich mit toFixed:

Die toFixed-Methode könnte zwar verwendet werden, sie gibt jedoch eine Zeichenfolge anstelle einer Zahl zurück und behebt Gleitkomma-Ungenauigkeiten nicht direkt.

const floorToTwo = (num) => Math.floor(num * 100) / 100;

console.log(floorToTwo(12.345)); // Output: 12.34
console.log(floorToTwo(12.349)); // Output: 12.34
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Durch die Verwendung der benutzerdefinierten Funktion vereinfachen wir den Prozess und vermeiden unnötige Konvertierungen.

Abschluss

Das Runden von Zahlen in JavaScript ist eine entscheidende Aufgabe, um Genauigkeit bei Berechnungen und Datendarstellung sicherzustellen. Wir haben klassische Methoden wie Math.round und Math.floor, fortgeschrittene Techniken mit Number.EPSILON, Intl.NumberFormat und sogar robuste benutzerdefinierte Funktionen untersucht, um Probleme mit der Gleitkommagenauigkeit effektiv zu lösen. Für komplexere Szenarien, wie etwa das Runden auf die n-te Dezimalstelle, haben wir einen flexiblen und fehlerfreien Ansatz demonstriert, der zuverlässige Ergebnisse garantiert.

Ausführlichere Informationen zu JavaScript-Rundungsmethoden finden Sie in der offiziellen JavaScript-Mathe-Dokumentation.

Das obige ist der detaillierte Inhalt vonJavaScript auf ecimale Stellen runden: Eine vollständige Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage