Signatur
Beschreibung
Number.MAX_VALUE ist die größte positive, endliche Zahl vom Typ number. Sie entspricht dem Wert 21024 − 2971, also ungefähr 1.7976931348623157e+308, und ergibt sich aus dem Format IEEE 754 (doppelte Genauigkeit, 64 Bit), das JavaScript für alle number-Werte verwendet.
Die Eigenschaft ist statisch: Du rufst sie immer als Number.MAX_VALUE auf, nicht über eine Zahleninstanz. Sie ist nicht beschreibbar, nicht aufzählbar und nicht konfigurierbar, lässt sich also weder ändern noch löschen.
Praktisch nutzt man Number.MAX_VALUE vor allem als Startwert bei der Suche nach einem Minimum, als Obergrenze bei Plausibilitätsprüfungen oder um einen Überlauf zu erkennen. Ergibt eine Rechnung einen Wert oberhalb dieser Grenze (nach Rundung), wird das Ergebnis zu Infinity.
Wichtig: MAX_VALUE ist nicht die größte Ganzzahl, mit der man sicher rechnen kann. Dafür gibt es Number.MAX_SAFE_INTEGER (253 − 1). Oberhalb davon lassen sich Ganzzahlen nicht mehr exakt darstellen, auch wenn sie noch weit unter MAX_VALUE liegen.
Beispiele
Wert ausgeben und mit Infinity vergleichen
console.log(Number.MAX_VALUE);
console.log(Number.MAX_VALUE < Infinity);
console.log(Number.isFinite(Number.MAX_VALUE));
Überlauf erkennen
const multiplySafe = (a, b) => {
const result = a * b;
if (!Number.isFinite(result)) {
throw new RangeError(`Überlauf: ${a} * ${b} > Number.MAX_VALUE`);
}
return result;
};
console.log(multiplySafe(1e150, 1e150));
try {
multiplySafe(Number.MAX_VALUE, 2);
} catch (err) {
console.log(err.message);
}
Startwert für die Suche nach einem Minimum
const prices = [19.99, 4.5, 12, 7.25];
const cheapest = prices.reduce(
(min, price) => (price < min ? price : min),
Number.MAX_VALUE
);
console.log(cheapest);
Rundung an der Grenze: + 1 ändert nichts
// Kleine Summanden gehen durch die begrenzte Genauigkeit verloren
console.log(Number.MAX_VALUE + 1 === Number.MAX_VALUE);
// Erst ein ausreichend großer Summand führt zu Infinity
console.log(Number.MAX_VALUE + 1e292);
console.log(Number.MAX_VALUE * 1.0000001);
// Wichtig · Fallstricke
- Nicht mit
MAX_SAFE_INTEGERverwechseln: Ganzzahlen überNumber.MAX_SAFE_INTEGER(9007199254740991) verlieren an Genauigkeit, z. B. ist2 ** 53 + 1 === 2 ** 53gleichtrue. Für große Ganzzahlen solltest duBigIntverwenden. - Rundung statt Überlauf:
Number.MAX_VALUE + 1ergibt wiederNumber.MAX_VALUEund nichtInfinity, weil der Summand beim Runden verloren geht. Einen Überlauf prüfst du deshalb besser mitNumber.isFinite(). - Nicht der kleinste Wert: Die kleinste Zahl ist
-Number.MAX_VALUEbzw.-Infinity.Number.MIN_VALUEist dagegen die kleinste positive Zahl (≈ 5e-324) und nicht die negativste. - Als Startwert für Minimum-Suchen ist
Infinityoft die sauberere Wahl, weil wirklich jeder endliche Wert kleiner ist. - Die Eigenschaft wird von allen JavaScript-Umgebungen unterstützt (Browser, Node.js, Deno).