Signatur
Beschreibung
Die statische Methode Math.trunc() gibt den ganzzahligen Teil einer Zahl zurück, indem sie alle Nachkommastellen entfernt.
Die Funktionsweise von Math.trunc() ist einfacher als die der drei anderen Math-Methoden Math.floor(), Math.ceil() und Math.round(): Sie schneidet den Dezimalpunkt und die rechts davon stehenden Ziffern ab, unabhängig davon, ob das Argument eine positive oder negative Zahl ist.
Da trunc() eine statische Methode von Math ist, wird sie immer als Math.trunc() verwendet und nicht als Methode eines selbst erzeugten Math-Objekts (Math ist kein Konstruktor).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | number | — | Eine Zahl. |
Rückgabewert
x.Beispiele
Math.trunc() verwenden
Math.trunc(-Infinity); // -Infinity
Math.trunc("-1.123"); // -1
Math.trunc(-0.123); // -0
Math.trunc(-0); // -0
Math.trunc(0); // 0
Math.trunc(0.123); // 0
Math.trunc(13.37); // 13
Math.trunc(42.84); // 42
Math.trunc(Infinity); // Infinity
Bitweise No-Ops zum Abschneiden von Zahlen verwenden
const original = 3.14;
const truncated1 = ~~original; // Doppelte Negation
const truncated2 = original & -1; // Bitweises UND mit -1
const truncated3 = original | 0; // Bitweises ODER mit 0
const truncated4 = original ^ 0; // Bitweises XOR mit 0
const truncated5 = original >> 0; // Bitweises Verschieben um 0
Überlauf bei bitweiser Konvertierung
const a = ~~2147483648; // -2147483648
const b = ~~-2147483649; // 2147483647
const c = ~~4294967296; // 0
// Wichtig · Fallstricke
Warnung: Die bitweisen Operationen sind wegen nicht zu vernachlässigender Randfälle kein Polyfill für Math.trunc().
Bitweise Operationen konvertieren ihre Operanden in 32-Bit-Integer, was historisch genutzt wurde, um Fließkommazahlen abzuschneiden. Beachte, dass dies im Wesentlichen toInt32 entspricht und nicht dasselbe wie Math.trunc ist. Wenn der Wert nicht -2^31 - 1 < value < 2^31 (-2147483649 < value < 2147483648) erfüllt, kommt es bei der Konvertierung zu einem Überlauf. Verwende ~~ nur dann als Ersatz für Math.trunc(), wenn du sicher bist, dass der Eingabebereich innerhalb des Bereichs von 32-Bit-Integern liegt.