Konvertieren einer Fließkommazahl in Int in JavaScript

Nithin Krishnan 30 Januar 2023
  1. Konvertieren von Float mit der Funktion parseInt() in JavaScript in Int
  2. Konvertieren von Float in Int mit Number.toFixed() in JavaScript
  3. Konvertieren von Float in Int mit bitweisen Operatoren in JavaScript
  4. Float in Int konvertieren mit Math Library Funktionen in JavaScript
  5. Fazit
Konvertieren einer Fließkommazahl in Int in JavaScript

In JavaScript gibt es viele Möglichkeiten, float in int zu konvertieren, wie unten gezeigt.

  • Die Funktion parseInt()
  • Die Methode Number.toFixed()
  • Konvertierung mit bitweisen Operatoren
    • Anwenden von OR um 0
    • Verwenden Sie den doppelten Operator NOT
    • Rechts SHIFT um 0
  • Verwenden der Bibliotheksfunktionen Math in JavaScript
    • Math.floor()
    • Math.round()
    • Math.ceil()
    • Math.trunc()

Konvertieren von Float mit der Funktion parseInt() in JavaScript in Int

parseInt() wird häufig in JavaScript verwendet. Mit dieser Funktion können wir die Werte verschiedener Datentypen in den Integer-Typ konvertieren. In diesem Abschnitt sehen wir die Umwandlung einer Gleitkommazahl in eine Ganzzahl. Die Syntax von parseInt() lautet parseInt(<value>). Der folgende Code zeigt das Verhalten der Funktion.

console.log(parseInt(123.321));
console.log(parseInt(123.998));

Ausgabe:

123
123

Bemerkungen

  • Weitere Informationen finden Sie in den MSN-Dokumenten.
  • Beim Konvertieren von Float-Werten verwirft parseInt() die Dezimalstellen und berücksichtigt sie nicht, während der ganzzahlige Teil des Float-Werts zurückgegeben wird.
  • parseInt() gibt NaN zurück, falls eine Konvertierung nicht möglich ist. Daher ist es gut, beim Konvertieren von Werten eine isNaN()-Prüfung einzuschließen, damit der Code sicher ist und nicht beschädigt wird.

Konvertieren von Float in Int mit Number.toFixed() in JavaScript

Number.toFixed() verhält sich etwas anders als parseInt(). Es rundet die Zahl auf den nächsten ganzzahligen Wert ab. Achten Sie daher auf die Rundung. Number.toFixed() rundet den Dezimalwert von float kleiner als .5 auf den niedrigeren ganzzahligen Wert. Wenn der Dezimalwert 0.5 oder höher ist, wird die Gleitkommazahl auf den nächsthöheren ganzzahligen Wert gerundet. Die Syntax für die Funktion Number.toFixed() lautet wie folgt.

numberObject.toFixed(<number of digits>);

Normalerweise müssen wir dieser Funktion einen Parameter übergeben, der die Anzahl der Stellen nach der Dezimalstelle in der Ausgabe angibt. Für unseren Zweck brauchen wir kein Argument zu erwähnen, da der Parameter standardmäßig 0 ist und daher einen ganzzahligen Wert zurückgibt. Beachten Sie die folgenden Beispielcodes.

console.log( (123.123).toFixed(2) );
console.log( (123.123).toFixed() );
console.log( (123.98).toFixed() );
console.log( (123.49).toFixed() );
console.log( (123.5).toFixed() );

Ausgabe:

123.12
123
124
123
124

Bemerkungen

  • Im Gegensatz zur Methode parseInt() ist Number.toFixed() nicht so berühmt für das Extrahieren des Integer-Teils, da der als Parameter übergebene Gleitkommawert aufgerundet wird.
  • Mit dieser Funktion können nur Float-Werte konvertiert werden. Im Gegensatz zur Funktion parseInt() wird die Konvertierung von Zeichenkettenwerten in float von Number.toFixed() nicht unterstützt.

Konvertieren von Float in Int mit bitweisen Operatoren in JavaScript

Wir haben die Methoden von parseInt() und Number.toFixed() gesehen. Beide führen einige interne Operationen aus, um die gewünschten Ergebnisse zu erzielen. Die bitweisen Operatoren sind im Vergleich zu den beiden Methoden effizient, schnell und leistungsfähig bei der Konvertierung der Gleitkommawerte in eine Ganzzahl. Wir können die folgenden bitweisen Operatoren für die Konvertierung verwenden.

Anwenden von OR um 0

Wir können den bitweisen Operator OR verwenden, um den ganzen Zahlenteil einer Gleitkommazahl zu erhalten. Die bitweisen Operatoren funktionieren auf Binärebene. Es wandelt die Operandennummer in eine Binärzahl um, und dann wird die bitweise ODER-Operation ausgeführt. Wenn Sie OR mit 0 auf eine Gleitkommazahl im zulässigen Bereich anwenden, wird der gesamte Zahlenteil des Gleitkommawerts zurückgegeben. Beachten Sie die folgenden Beispiele.

console.log(123.321 | 0);
console.log(123.5432 | 0);
console.log(123.921 | 0);
console.log(216 | 0);
console.log(-321.456 | 0)

Ausgabe:

123
123
123
216
-321

Verwenden des doppelten Operator NOT

Ein weiterer bitweiser Operator ist der Operator NOT, der durch das Zeichen ~ dargestellt wird. Als unärer Operator können wir den bitweisen Operator NOT verwenden, um den Dezimalteil in einer Gleitkommazahl abzulegen. Der Operator NOT invertiert auf Binärebene die Binärbitwerte (gibt 0 für ein 1-Bit und 1 für einen 0-Bitwert zurück). Das heißt, wenn eine Zahl durch 10110 binär dargestellt wird, ergibt das Anwenden von NOT den invertierten Wert 01001. Durch erneutes Anwenden der Funktion NOT werden die ursprünglichen Bits (10110) der Nummer zurückgegeben. Wenn Sie den Operator NOT zweimal anwenden, wird der numerische Wert zurückgegeben, und während des Vorgangs wird die Zahl nicht geändert, wenn es sich um eine Ganzzahl handelt. Bei einem Float-Wert wird durch zweimaliges Anwenden des Operators NOT nur der gesamte Zahlenteil der Float-Nummer zurückgegeben. Die folgenden Beispiele verdeutlichen diese Tatsache.

console.log(~~(123.321));
console.log(~~(123.53));
console.log(~~(23.97));
console.log(~~(-23.97));
console.log(~~(-0.97));

Ausgabe:

123
123
23
-23
0

Rechtsverschiebung um 0

Wir können den bitweisen Rechtsverschiebungsoperator anwenden (dargestellt durch >> Zeichen). Der Gleitkommawert wird in eine Ganzzahl konvertiert. Darunter auf der Binärebene verschiebt der bitweise rechte SHIFT-Operator die Binärbits des Operanden um eine durch den zweiten Operanden angegebene Anzahl nach rechts. Daher werden die rechts überlaufenden Bits ignoriert. Dabei behält die Funktion den Vorzeichenwert der Zahl bei. Die folgenden Codes repräsentieren die Arbeitsweise des richtigen SHIFT-Operators.

console.log(123.321 >> 0);
console.log(123.53 >> 0);
console.log(23.97 >> 0);
console.log(-23.97 >> 0);
console.log(-0.97 >> 0);

Ausgabe:

123
123
23
-23
0

Bemerkungen

  • Bitweise Operatoren sind schneller, da sie der Maschinensprache am nächsten kommen und keine zusätzlichen Überprüfungen oder Operationen durchführen müssen, wie dies intern mit parseInt() oder Number.toFixed() geschehen würde.
  • Bitweise Operatoren wie OR, NOT usw. können bei Anwendung auf große Zahlen zu unerwarteten Ergebnissen führen. Der maximale Wert, der zum Abschneiden des Dezimalwerts unterstützt wird, ist 2147483647 (231-1). Jede Zahl größer als 2147483647 führt zu unerwarteten Ergebnissen.
  • In JavaScript werden Gleitkommazahlen durch 64 Bit dargestellt, wobei ein Bit für die Beibehaltung des Vorzeichenwerts (positiv oder negativ) reserviert ist, 32 Bit für den gesamten Zahlenteil. Die bitweisen Operatoren arbeiten mit den vorzeichenbehafteten 32-Bit-Zahlen, wobei der Dezimalwert ignoriert wird. Daher erhalten wir den ganzzahligen Teil des Float-Werts.

Float in Int konvertieren mit Math Library Funktionen in JavaScript

Wir können die JavaScript-Bibliothek Math verwenden, die verschiedene Funktionen hat, um Ganzzahlen aus Gleitkommazahlen zu erhalten. Im Gegensatz zu den bitweisen Operatoren bieten diese zusätzliche Funktionen, die auf Anforderungen wie dem Runden von Werten auf die nächsten Zahlen, dem Abschneiden von Werten usw. basieren. Zu diesem Zweck können wir die folgenden Methoden verwenden.

Konvertierung mit Math.floor()

Die Funktion Math.floor() rundet den als Parameter übergebenen Wert auf den nächstniedrigeren ganzzahligen Wert ab. Die Syntax von Math.floor() lautet Math.floor(<float value>). Im Folgenden finden Sie einige Beispiele, die die Verwendung und die Konvertierung eines Floats in eine ganze Zahl veranschaulichen.

console.log(Math.floor(123.321));
console.log(Math.floor(123.53));
console.log(Math.floor(23.97));
console.log(Math.floor(-23.97));
console.log(Math.floor(-0.97));

Ausgabe:

123
123
23
-24
-1

Der Fall negativer Gleitkommazahlen wie Math.floor(-23.97) mag verwirrend erscheinen, aber die Funktion konvertiert den Wert zu Recht in die nächst niedrigere Ganzzahl -24. Denken Sie daran, dass der tatsächliche Wert einer negativen Zahl umso geringer ist, je höher der numerische Wert ist.

Konvertierung mit Math.round()

Im Gegensatz zur Funktion Math.floor() nähert sich Math.round() dem in Parametern übergebenen Wert an. Wenn der Wert nach der Dezimalstelle 5 oder höher ist, wird die Zahl auf die nächsthöhere Ganzzahl gerundet. Andernfalls wird der Wert nach der Dezimalstelle kleiner als 5 und auf die untere Ganzzahl gerundet. Basierend auf dem Wert nach dem Dezimalpunkt kann sich die Funktion Math.round() daher ähnlich wie die Funktionen Math.floor() oder Math.ceil() verhalten. Es folgen einige Beispiele mit Math.round().

console.log(Math.round(123.321));
console.log(Math.round(123.53));
console.log(Math.round(23.97));
console.log(Math.round(-23.97));
console.log(Math.round(-0.97));

Ausgabe:

123
124
24
-24
-1

Konvertierung mit Math.ceil()

Die Funktion Math.ceil() verhält sich der Funktion Math.floor() entgegengesetzt. Anstatt wie in Math.floor() auf die nächstniedrigere Ganzzahl abzurunden, gibt Math.ceil() den nächsthöheren Ganzzahlwert zurück. Es folgen einige Konvertierungen mit Math.ceil().

console.log(Math.ceil(123.321));
console.log(Math.ceil(123.53));
console.log(Math.ceil(23.97));
console.log(Math.ceil(-23.97));
console.log(Math.ceil(-0.97));

Ausgabe:

124
124
24
-23
-0

Konvertierung mit Math.trunc()

Wie der Name andeutet, schneidet die Funktion Math.trunc() den Dezimalwert ab und gibt den ganzzahligen Teil des Gleitkommawertes zurück. Diese Methode kann als ähnlich zu den zuvor diskutierten bitweisen Operatoren angesehen werden. Hier gibt es keine Abrundung auf die nächsten ganzen Zahlen. Stattdessen wird der gesamte Zahlenteil des Float-Werts so zurückgegeben, wie er ist. Es folgen einige Anwendungsfälle mit Math.trunc().

console.log(Math.trunc(123.321));
console.log(Math.trunc(123.53));
console.log(Math.trunc(23.97));
console.log(Math.trunc(-23.97));
console.log(Math.trunc(-0.97));

Ausgabe:

123
123
23
-23
-0

Fazit

Es gibt verschiedene Möglichkeiten, den gesamten Zahlenteil aus einem Float-Wert herauszuholen. Bitweise Operatoren sind schneller in der Ausführung, da sie Operationen auf Binärebene ohne die Anforderungen der Konvertierung oder einer anderen Verarbeitung ausführen. parseInt(), Math.trunc() und die bitweisen Operatoren (OR um 0, Double NOT, Rechtsverschiebung um 0) geben die genaue ganze Zahl an, als würden sie den Gleitkommawert zerreißen am Dezimalpunkt und geben Sie nur den ganzen Zahlenteil davon zurück. Wenn wir daran interessiert sind, die Gleitkommazahl zu verarbeiten, um sie zu runden, oder die nächste Ganzzahl basierend auf den Geschäftsanforderungen zu erhalten, ist es gut, Number.toFixed(), Math.round(), Math.ceil() Und die Funktionen Math.floor().

Verwandter Artikel - JavaScript Integer