Heim >Web-Frontend >js-Tutorial >Ein Leitfaden zu Rundungsnummern 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.
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. Number.toFixed
und Number.toPrecision
Methoden zum Rundungszahlen an bestimmte Dezimalstellen oder signifikante Zahlen. Diese Methoden geben die abgerundete Nummer als Zeichenfolge zurück. 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. Math.fround
-Methode kann verwendet werden, um die engste darstellbare Anzahl von 32 Bits zu finden. 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. 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.
Math.round
. 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
<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
. Dies rundet den Wert immer auf die Ganzzahl unten (Name bedeutet, dass die Nummer auf den "Boden" gedrückt wird): Math.floor
<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
Math.ceil
. 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
. 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
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
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
Number.toFixed
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
<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. 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): 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 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: 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: Dies liegt daran, dass 0,1 und 0,2 nicht in binär dargestellt werden können und beim Zusammen hinzuzufügen. Wie wir oben gesehen haben, kann 0,1 jedoch nicht in 32 Bit genau ausgedrückt werden. 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: Dies geschieht, weil Decimal 3.55 keine 32-Bit-genaue Darstellung verwenden kann. Wir können 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. 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 oder
verwenden, um die Nummer auf die nächste Ganzzahl zu runden. Zum Beispiel wird , -Methode zu bestimmten Dezimalstellen runden. Zum Beispiel wird Kann ich 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. toFixed()
runden zu Dezimalstellen mit
Die Methode Number.toPrecision
Number.toPrecision
funktioniert ähnlich wie die Number.toFixed
-Methode, rundet die Zahlen jedoch auf eine feste Anzahl von signifikanten Zahlen ab. <code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>
Number
ein Wickel einwickelt wird: <code class="language-javascript">const { PI, E } = Math;</code>
<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
<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>
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>
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>
<code class="language-javascript">const { PI, E } = Math;</code>
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>
Welche Methoden sollte ich anwenden, um Zahlen rund zu machen?
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
Number.toFixed
verwenden. Bitte beachten Sie jedoch, dass beide Methoden nach Zahlen aufgerufen werden und eine Zeichenfolge zurückgeben. Number.toPrecision
JavaScript digitale interessante Nachrichten
FAQs über Rundungszahlen in JavaScript
Wie können Zahlen zu den engsten Ganzzahlen in JavaScript runden? Sie können die Funktion 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()
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. 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.
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!