Signatur
Beschreibung
Number.MIN_VALUE ist die kleinste positive Zahl, die im Format IEEE 754 mit doppelter Genauigkeit (64 Bit) darstellbar ist. Ihr Wert ist 2-1074, also ungefähr 5e-324. Es handelt sich um eine subnormale (denormalisierte) Zahl. Jeder positive Wert, der noch kleiner ist, wird auf 0 gerundet.
Wichtig: Trotz ihres Namens ist MIN_VALUE nicht die kleinste (negativste) Zahl überhaupt. Das ist -Number.MAX_VALUE bzw. -Infinity. MIN_VALUE gibt an, wie nah man an die Null herankommt.
Die Eigenschaft ist statisch, du greifst also immer über Number.MIN_VALUE darauf zu und nicht über eine Zahleninstanz. Sie ist nicht beschreibbar, nicht aufzählbar und nicht konfigurierbar. Praktisch nutzt man sie z. B. als Untergrenze für strikt positive Werte, beim Testen von Grenzfällen numerischer Algorithmen oder als Startwert, der gerade eben größer als 0 ist.
Rückgabewert
5e-324 (2-1074).Beispiele
Wert auslesen und Unterlauf zu 0 zeigen
console.log(Number.MIN_VALUE);
console.log(Number.MIN_VALUE > 0);
// Halbiert man den Wert, wird auf 0 gerundet
console.log(Number.MIN_VALUE / 2);
console.log(Number.MIN_VALUE === 2 ** -1074);
Verwechslung mit der kleinsten Zahl vermeiden
const werte = [-12, 3, -900, 0.5];
// FALSCH: MIN_VALUE ist positiv, deshalb wird hier nie etwas kleiner
const falsch = werte.reduce((max, w) => Math.max(max, w), Number.MIN_VALUE);
// RICHTIG: mit -Infinity starten
const richtig = werte.reduce((max, w) => Math.max(max, w), -Infinity);
console.log(falsch, richtig);
console.log(Math.max(Number.MIN_VALUE, -5));
Strikt positive Eingaben absichern
// Verhindert Division durch 0 bei Gewichtungen
const sichereGewichtung = (w) => Math.max(w, Number.MIN_VALUE);
const gewichte = [0, 0.25, 1];
const kehrwerte = gewichte.map((w) => 1 / sichereGewichtung(w));
console.log(kehrwerte);
Unterlauf in Berechnungen erkennen
const produkt = (zahlen) => zahlen.reduce((a, b) => a * b, 1);
const ergebnis = produkt([1e-200, 1e-200]);
if (ergebnis !== 0 && Math.abs(ergebnis) < Number.MIN_VALUE) {
console.log('unmöglich');
} else if (ergebnis === 0) {
console.log('Unterlauf: Ergebnis wurde auf 0 gerundet');
}
// Tipp: stattdessen mit Logarithmen rechnen
console.log(Math.log10(1e-200) + Math.log10(1e-200));
// Wichtig · Fallstricke
- Häufigster Fehler:
Number.MIN_VALUEwird oft als Startwert bei der Maximumsuche genommen. Da der Wert positiv ist, kommen bei rein negativen Daten falsche Ergebnisse heraus. Nimm stattdessen-Infinityoder-Number.MAX_VALUE. - Nicht mit
Number.EPSILONverwechseln:EPSILON(ca.2.22e-16) ist der Abstand zwischen 1 und der nächstgrößeren darstellbaren Zahl. Er eignet sich für Toleranzvergleiche bei Gleitkommazahlen,MIN_VALUEdagegen nicht. MIN_VALUEist eine subnormale Zahl mit nur 1 Bit Genauigkeit. Die kleinste normalisierte Zahl ist 2-1022 (ca.2.2250738585072014e-308). Auf manchen CPUs sind Rechnungen mit subnormalen Zahlen deutlich langsamer.- Ein Zugriff über eine Instanz wie
(5).MIN_VALUEergibtundefined. Zuweisungen werden im nicht-strikten Modus stillschweigend ignoriert und lösen im Strict Mode einenTypeErroraus. - Die Eigenschaft wird von allen Browsern und von Node.js unterstützt.