Heim >Web-Frontend >js-Tutorial >Ein Leitfaden zu Rundungsnummern in JavaScript

Ein Leitfaden zu Rundungsnummern in JavaScript

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-09 11:32:10599Durchsuche

A Guide to Rounding Numbers in JavaScript

In diesem Artikel werden verschiedene Zahlenrundungsmethoden in JavaScript untersucht, einschließlich der Verwendung von JavaScript -mathematischen Funktionen und anderen Methoden zur Rundung auf Dezimalstellen. Wir werden auch Probleme einführen, auf die bei Rundungszahlen beachtet werden müssen.

Schlüsselpunkte

  • JavaScript bietet verschiedene Möglichkeiten für runde Zahlen, einschließlich Math.round, Math.floor, Math.ceil und Math.trunc. Math.round runden zur nächsten Ganzzahl, Math.floor rund nach unten, Math.ceil runden, Math.trunc den fraktionalen Teil der Zahl abschneiden.
  • JavaScript enthält Number.toFixed und Number.toPrecision Methoden zum Rundungszahlen an bestimmte Dezimalstellen oder signifikante Zahlen. Diese Methoden geben die abgerundete Nummer als Zeichenfolge zurück.
  • , wenn es um negative Zahlen handelt, unterscheiden sich das Verhalten von Math.round, Math.floor, Math.ceil und Math.trunc. Zum Beispiel rundet Math.floor die negative Zahl auf die nächst kleinste Ganzzahl, während Math.trunc den Bruchteil verkürzt und es effektiv nach oben rundet.
  • Aufgrund der binären Darstellung von Zahlen können in JavaScript Präzisionsprobleme auftreten. Einige Dezimalzahlen können nicht in binärem dargestellt werden, was zu Rundungsfehlern führt. Die Math.fround -Methode kann verwendet werden, um die engste darstellbare Anzahl von 32 Bits zu finden.
  • Die Auswahl der Rundungsmethode hängt vom spezifischen Anwendungsfall ab. Math.round ist eine gute allgemeine Wahl für die Abrunden auf die nächste Ganzzahl, aber Math.floor, Math.ceil oder Math.trunc ist möglicherweise besser geeignet, immer rund oder aufzunehmen oder mit negativen Zahlen umzugehen. Number.toFixed oder Number.toPrecision gilt für die Rundung auf eine bestimmte Dezimalzahl oder erhebliche Anzahl.

JavaScript -Rundung

Bei der Verarbeitung numerischer Werte führen wir manchmal Berechnungen durch, die am Ende fraktionale Teile erzeugen, die an die Ganzzahlen gerundet werden müssen - beispielsweise bei der Berechnung des Durchschnittspreises oder der Verarbeitung Zufallszahlen. Glücklicherweise bietet JavaScripts Math -Objekt viele Möglichkeiten, Zahlen für ganzzahlige Werte zu runden.

In unserem Beispiel werden wir verschiedene Arten der Rundung unter Verwendung von zwei wichtigsten mathematischen Konstanten: π (das Verhältnis des Umfangs eines Kreises zu seinem Durchmesser) und E (die Basis des natürlichen Logarithmus, auch bekannt als "Euler -Zahl "). Beide Werte sind Eigenschaften von Math Objekten, lassen wir sie jedoch einigen Variablen zu, um das Handeln zu erleichtern:

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>

Pro -Tipp: Sie können auch Objektzerstörungen verwenden, um diese Zuordnung in einer Zeile zu treffen:

<code class="language-javascript">const { PI, E } = Math;</code>

Jetzt, da wir diese Konstanten definiert haben, schauen wir uns einige Methoden zum Rundungszahlen in JavaScript an.

runde Zahlen in JavaScript mit Math.round

Die erste Methode, die wir uns ansehen werden, ist

. Dies ist die einfachste Wahl. Es rundet nur eine beliebige Zahl mit einem Bruchteil der nächsten Ganzzahl. Es verwendet die folgende Regel: Wenn eine Zahl genau zwischen zwei Ganzzahlen liegt, runden Sie sie auf. Zum Beispiel rundet 2.5 auf 3. Math.round

Um diese Methode zu verwenden, müssen wir nur die Nummer angeben, die als Parameter abgerundet werden soll:

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>
Wenn Sie die Nummer auf den nächsten Ganzzahlwert übertragen möchten, ist

sehr bequem. Wenn Sie beispielsweise die durchschnittliche Punktzahl von drei Tests berechnen, fügen Sie die drei Bewertungen hinzu und teilen Sie sie um drei. Dies kann keine Ganzzahl erhalten, sodass Sie sie mit Math.round(): Math.round() bis zum nächsten Wert runden können

<code class="language-javascript">const { PI, E } = Math;</code>
Rundungsnummern mit

Math.floor

Die nächste Methode, die wir anzeigen werden, ist

. Dies rundet den Wert immer auf die Ganzzahl unten (Name bedeutet, dass die Nummer auf den "Boden" gedrückt wird): Math.floor

Eine häufige Verwendung von
<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>

besteht darin, zufällige Ganzzahlen zu erstellen. Abgerundet wird sichergestellt, dass die Ganzzahl bei Null beginnt und dass jede Ganzzahl die gleiche Chance hat, zurückzukehren. Aus Null zu beginnen, ist oft nützlich, da Arrays in JavaScript mit Null indexiert sind. Die Absenkung sorgt daher dafür, dass das erste Element im Array ausgewählt werden kann. Das folgende Beispiel zeigt, wie Sie ein zufälliges Element aus einem Array mit Math.floor: Math.floor aus auswählen

<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>
Der obige Code verwendet

Abrundung, um sicherzustellen, dass ein Index zwischen 0 und 4 zurückgegeben wird, sodass jedes Element im Array die gleiche Chance hat, ausgewählt zu werden. Math.floor

Rundungsnummern mit

Math.ceil

Apropos Rundung nach oben, genau das macht

. Dieser Name stammt aus "Decke", was entgegen "Bodenbelag" bedeutet, dass der Wert steigt. Diese Methode funktioniert genauso wie alle anderen Methoden. Geben Sie einfach die Nummer an, die Sie als Parameter abrufen möchten: Math.ceil

<code class="language-javascript">Math.floor(2.3); // 向下舍入到2

Math.floor(2.921); // 向下舍入到2

Math.floor(2.5); // 向下舍入到2

Math.floor(PI);

Math.floor(E);</code>
Aber wann müssen Sie eine Nummer zusammenrunden? Eine häufige Verwendung ist, wenn Sie berechnen müssen, wie viele Container Sie benötigen, um etwas zu halten. Angenommen, Sie haben eine Musikwebsite, die Wiedergabelisten enthält. Jede Wiedergabeliste enthält zehn Songs. Wenn jemand 82 Songs hochlädt, müssen Sie herausfinden, wie viele Wiedergabelisten Sie erstellen möchten. Dies geschieht durch Teilen der Anzahl der Songs durch 10 (die Anzahl der Songs in jeder Wiedergabeliste):

<code class="language-javascript">const fruit = ["?", "?", "?", "?", "?"];

const randomFruit = fruit[Math.floor(Math.random() * fruit.length)];</code>
Verwenden Sie

rund um 8 ... Wir werden jedoch für die letzten beiden Songs keine Wiedergabeliste erstellen! In diesem Fall müssen wir uns immer zusammenschließen, damit wir für jeden Rest einen zusätzlichen Behälter bereitstellen können: Math.round

<code class="language-javascript">Math.ceil(2.3); // 向上舍入到3

Math.ceil(2.921); // 向上舍入到3

Math.ceil(2.5); // 向上舍入到3

Math.ceil(PI);

Math.ceil(E);</code>
Rundungsnummern mit

Math.trunc

Die nächste Methode, die wir anzeigen werden, ist

. Streng genommen ist dies keine Rundungsfunktion. Grundsätzlich löscht es nur den dezimalen Teil der Zahl und bleibt nur den Ganzzahlteil, wie im folgenden Beispiel gezeigt: Math.trunc

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>

Auf den ersten Blick scheint Math.trunc dieselbe zu sein wie Math.floor; Wenn jedoch ein negativer Wert als Parameter bereitgestellt wird, verhalten sich die beiden Methoden unterschiedlich, wie im folgenden Beispiel gezeigt:

<code class="language-javascript">const { PI, E } = Math;</code>
Der Unterschied tritt auf, weil bei der Verwendung von

zur Abrundung der negativen Zahl auf die nächst kleinste Ganzzahl zurückgezogen wird und ein negatives Wert dem Abrundung nach oben entspricht. Math.floor

Wenn der Parameter negativ ist, gibt

den gleichen Wert wie Math.ceil: Math.trunc zurück

<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>
Alle diese Methoden sind sehr nützlich, aber sie haben eine Einschränkung, dass sie immer ganzzahlige Werte zurückgeben. Was ist, wenn wir Zahlen zu einer bestimmten Dezimalzahl oder einer signifikanten Zahl rundeten?

runde Zahlen zu Dezimalstellen in JavaScript

Wir haben gesehen, dass

die Nummer auf die nächste Ganzzahl rundet. Leider bietet das Math.round -Objekt keine Möglichkeit, Zahlen an einem bestimmten Dezimalort mit präziser Genauigkeit zu runden. Glücklicherweise bietet der Typ Math einige integrierte Möglichkeiten, dies zu tun. Schauen wir sie uns an. Number

runden zu Dezimalstellen mit

Number.toFixed

Dies ist eine numerische Methode, was bedeutet, dass sie von der Zahl selbst aufgerufen wird. Es rundet die Dezimalzahl auf die angegebene Dezimalzahl, die als Parameter bereitgestellt wird:

Eine Sache zu beachten ist, dass dieser Wert als
<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>
String

zurückgegeben wird. Sie können dieses Problem lösen, indem Sie den Methodenaufruf in eine -Funktion einwickeln, die das Ergebnis wieder in eine Nummer umwandelt: Number

Hinweis: Wenn Sie versuchen, diese Methode auf eine Zahl zu wenden, die bereits eine Ganzzahl ist, erhalten Sie einen Fehler, wenn Sie die Methode nur mit einem einzelnen Punkt aufrufen:
<code class="language-javascript">Math.floor(2.3); // 向下舍入到2

Math.floor(2.921); // 向下舍入到2

Math.floor(2.5); // 向下舍入到2

Math.floor(PI);

Math.floor(E);</code>

Sie können keine Methoden für Ganzzahlen mit einem einzigen Punkt aufrufen, da nicht klar ist, ob es sich bei dem Punkt um einen Methode -Call -Operator oder ein Dezimalpunkt handelt. Um dies zu beheben, können Sie Ganzzahlen in Klammern einfügen oder zwei Punkte verwenden, um klar anzuzeigen, dass Sie eine Methode aufrufen, anstatt ein numerisches Literal mit einem Dezimalpunkt zu schreiben:
<code class="language-javascript">const fruit = ["?", "?", "?", "?", "?"];

const randomFruit = fruit[Math.floor(Math.random() * fruit.length)];</code>

Wenn kein Argument vorgelegt wird, wird die Nummer auf die nächste Ganzzahl gerundet (aber als Zeichenfolge zurückgegeben):
<code class="language-javascript">Math.ceil(2.3); // 向上舍入到3

Math.ceil(2.921); // 向上舍入到3

Math.ceil(2.5); // 向上舍入到3

Math.ceil(PI);

Math.ceil(E);</code>

Ein allgemeiner Anwendungsfall für die Rundung auf einige Dezimalstellen ist die Umsetzung mit Währung - wenn Sie beispielsweise den Preis für etwas im nächsten Dollar an Cent anbieten möchten. Nehmen wir an, Sie haben eine E-Commerce-Website mit einer Promotion in Arbeit und erhalten einen Rabatt von 15% auf jeden Artikel in Ihrem Warenkorb. Bevor Sie den ermäßigten Preis anzeigen, kann es erforderlich sein, ihn zu runden:
<code class="language-javascript">const songsPerPlaylist = 10;
const numberOfSongs = 82;
const numberOfPlaylists = numberOfSongs / songsPerPlaylist;</code>

Dies kann leicht mit
<code class="language-javascript">const numberOfPlaylists = Math.ceil(numberOfSongs / songsPerPlaylist);</code>
:

repariert werden Number.toFixed

<code class="language-javascript">Math.trunc(2.3); // 只留下2

Math.trunc(2.921); // 只留下2,即使它更接近3

Math.trunc(2.5); // 只留下2

Math.trunc(PI);

Math.trunc(E);</code>
Hinweis: Weitere Informationen zu den

-Anproblemen finden Sie unter Nummer (). Tofixed () Rundungsfehler: beschädigt, aber fixierbar. toFixed()

runden zu Dezimalstellen mit Number.toPrecision

Die Methode

Number.toPrecision funktioniert ähnlich wie die Number.toFixed -Methode, rundet die Zahlen jedoch auf eine feste Anzahl von signifikanten Zahlen ab.

Wenn Sie eine schnelle Erinnerung an eine gültige Zahl benötigen, bedeutet dies im Grunde nur die erste Verwendung der ersten ungleich Null-Nummer. Für große Zahlen wird die endgültige Antwort auch mit Nullen gefüllt. Zum Beispiel wird die Zahl 53.863 auf zwei signifikante Ziffern um 54.000 werden. Dies liegt daran, dass 5 und 3 die ersten beiden Zahlen ungleich Null sind, und da die nächste Zahl 8 ist, rundet sie nach oben. Wir müssen am Ende Nullen hinzufügen, um sicherzustellen, dass der abgerundete Wert eine angemessene Annäherung an die ursprüngliche Zahl ist.

Sie können Dezimalstellen auf ähnliche Weise runden. Beispielsweise rundet 0,00000623978 auf 0,0000062 bis zwei signifikante Ziffern, da 6 und 2 die ersten beiden Zahlen ungleich Null sind, und da die nächste Ziffer 3 ist, rundet es ab.

Um diese Methode zu verwenden, rufen Sie sie einfach auf der Nummer auf und geben Sie die Anzahl der bedeutenden Zahlen als Argumente an (denken Sie daran, Ganzzahlen müssen vor dem Aufrufen in Klammern platziert werden):

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>

Beachten Sie, dass alle Werte als Zeichenfolgen zurückgegeben werden und mit exponentieller Notation verwendet werden können - zum Beispiel "5.4e 4" anstelle von "54000".

Wie bereits erwähnt, können wir sicherstellen, dass eine Nummer zurückgegeben wird, indem der Methodenaufruf in die Funktion Number ein Wickel einwickelt wird:

<code class="language-javascript">const { PI, E } = Math;</code>

Eine häufige Verwendung der Rundung auf eine bestimmte erhebliche Zahl ist, wenn Sie mit großer Anzahl arbeiten und nicht sicher sind, wie groß sie sind. Nehmen wir beispielsweise an, Sie möchten melden, wie oft der neueste Beitrag "gemocht" wurde. Haben Sie ihn auf die nächsten 10, 100 oder 1000 umrundet? In gewissem Maße hängt es davon ab, wie beliebt es ist. Die Lösung besteht darin, es auf eine signifikante Zahl zu runden:

<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>

Ausgaben von Rundungszahlen in JavaScript

Es gibt einige Dinge zu beachten, wenn sie Zahlen in JavaScript (oder eine Programmiersprache) runden. Wie Sie vielleicht wissen, speichert ein Computer alle Daten (einschließlich Zahlen) als binäre Darstellung. JavaScript speichert Zahlen als Binärwerte von 32-Bit-Single-Precision.

Eines der Probleme dabei ist, dass einige Dezimalzahlen nicht genau in binär dargestellt werden können. Dies verursacht normalerweise keine Probleme, aber es führt zu einigen seltsamen Ergebnissen wie:

<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>

Dies liegt daran, dass 0,1 und 0,2 nicht in binär dargestellt werden können und beim Zusammen hinzuzufügen.

Das Objekt

Math hat eine andere Methode namens fround, die die nächste Zahl zurückgibt, die mit 32 Bit dargestellt werden kann. Zum Beispiel kann 0,6125 genau wie binär 0,101 ausgedrückt werden, sodass dies den gleichen Wert zurückgibt:

<code class="language-javascript">Math.floor(2.3); // 向下舍入到2

Math.floor(2.921); // 向下舍入到2

Math.floor(2.5); // 向下舍入到2

Math.floor(PI);

Math.floor(E);</code>

Wie wir oben gesehen haben, kann 0,1 jedoch nicht in 32 Bit genau ausgedrückt werden. Math.fround zeigt uns die nächste Zahl, die dargestellt werden kann:

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>

Wie Sie sehen, ist es sehr nahe bei 0,1, aber ist sehr etwas höher. In den meisten praktischen Fällen verursacht dies kein Problem, aber gelegentlich verursacht es ein seltsames Verhalten, wenn Sie versuchen, einige Zahlen zu runden:

<code class="language-javascript">const { PI, E } = Math;</code>

Dies geschieht, weil Decimal 3.55 keine 32-Bit-genaue Darstellung verwenden kann. Wir können Math.fround verwenden, um zu sehen, wie es tatsächlich darstellt:

<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>

Wie Sie sehen, wird es tatsächlich durch die schwimmende Punktnummer 3.549999952316284 dargestellt, die auf 3,5 rundet.

Diese Probleme mit Rundungszahlen in JavaScript treten nicht oft auf, aber Sie sollten auf jeden Fall auf diese Probleme achten, wenn Sie viel Rundung durchführen, insbesondere wenn die Ergebnisse korrekt sein müssen.

Welche Methoden sollte ich anwenden, um Zahlen rund zu machen?

Mit allen in diesem Artikel beschriebenen Rundungsmethoden können Sie fragen, welche Methode am besten ist. Die Antwort lautet immer "Es hängt davon ab".

Wenn Sie nur die Zahlen zur nächsten Ganzzahl runden möchten, lehnen Sie sich mit Math.round nicht falsch ein. Wenn Sie jedoch immer rund oder aufrunden möchten, sollten Sie auch in Betracht ziehen, oder Math.floor. Wenn Sie auch planen, negative Zahlen rund zu runden, sollten Sie stattdessen Math.ceil verwenden. Math.trunc

Wenn Sie zu einer bestimmten Dezimalzahl oder einer erheblichen Zahl runden müssen, müssen Sie

oder Number.toFixed verwenden. Bitte beachten Sie jedoch, dass beide Methoden nach Zahlen aufgerufen werden und eine Zeichenfolge zurückgeben. Number.toPrecision

Sie können alle verschiedenen Arten von Rundungsbeispielen sehen, die in diesem Artikel in der folgenden CodePen -Demonstration beschrieben werden.

Codepen Demo Link

Mit all diesen verschiedenen Methoden sollten Sie in Zukunft keine Probleme mit Rundungszahlen haben.

Wenn Sie diesen Artikel nützlich finden, können Sie auch diese mögen:

    JavaScript digitale interessante Nachrichten
  • Schnelle Tipps: So konvertieren Sie Zahlen in ordinale Zahlen in JavaScript
FAQs über Rundungszahlen in JavaScript

Wie können Zahlen zu den engsten Ganzzahlen in JavaScript runden? Sie können die Funktion

verwenden, um die Nummer auf die nächste Ganzzahl zu runden. Zum Beispiel wird Math.round() 3 und Math.round(3.14) 5 erhält 5. Math.round(4.76) Was ist der Unterschied zwischen

, Math.round() und Math.floor()? Math.ceil() runden zur nächsten Ganzzahl, Math.round() rund bis zur nächsten Ganzzahl, Math.floor() bis zur nächsten Ganzzahl runden. Math.ceil()

Kann ich die Zahlen auf eine bestimmte Dezimalzahl runden? Ja, Sie können Zahlen mit der

-Methode zu bestimmten Dezimalstellen runden. Zum Beispiel wird toFixed() 3.14 erhalten. let roundedNumber = 3.14159.toFixed(2)

Math.round() Wie kann man mit Zahlen mit 0,5 Dezimalenteilen umgehen? Math.round() Verwenden Sie die "Rundung" -Logik, was bedeutet, dass der Bruchteil genau 0,5 bis zur nächsten Ganzzahl rundet. Zum Beispiel ist das Ergebnis von Math.round(2.5) 2 und das Ergebnis von Math.round(3.5) 4.

Kann ich Math.round() zu runden positiven und negativen Zahlen verwenden? Ja, Math.round() funktioniert mit positiven und negativen Zahlen. Es rundet positive Zahlen wie gewohnt und rundet die negativen Zahlen auf Null.

Ist in JavaScript ein Rundungsfehler auftritt? Ja, Rundungsfehler können aufgrund der Art und Weise auftreten, wie schwebende Punktvorgänge in Ihrem Computer funktionieren. Es ist wichtig, potenzielle Genauigkeitsprobleme zu beachten, insbesondere wenn es um sehr große oder sehr kleine Zahlen geht. In diesem Fall sollten Sie eine Bibliothek wie Decimal.js für genauere arithmetische Operationen verwenden.

Das obige ist der detaillierte Inhalt vonEin Leitfaden zu Rundungsnummern in JavaScript. 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