| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Number | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Number Werte stellen Gleitkommazahlen wie 37 oder -9.25 dar.
Der Number Konstruktor enthlt Konstanten und Methoden zur Arbeit mit Zahlen. Werte anderer Typen knnen mit der Number() Funktion in Zahlen konvertiert werden.
Zahlen werden am hufigsten in literaler Form wie 255 oder 3.14159 ausgedrckt. Die lexikalische Grammatik enthlt eine detailliertere Referenz.
255; // two-hundred and fifty-five
255.0; // same number
255 === 255.0; // true
255 === 0xff; // true (hexadecimal notation)
255 === 0b11111111; // true (binary notation)
255 === 0.255e3; // true (decimal exponential notation)
Ein Zahlenliteral wie 37 im JavaScript-Code ist ein Gleitkommawert und kein Integer. Es gibt keinen separaten Integer-Typ in der alltglichen Verwendung. (JavaScript hat auch einen BigInt Typ, aber dieser ist nicht dafr gedacht, Number im alltglichen Gebrauch zu ersetzen. 37 ist immer noch eine Zahl, kein BigInt.)
Wenn Number(value) als Funktion verwendet wird, konvertiert es einen String oder einen anderen Wert in den Typ Number. Wenn der Wert nicht konvertiert werden kann, gibt er NaN zurck.
Number("123"); // returns the number 123
Number("123") === 123; // true
Number("unicorn"); // NaN
Number(undefined); // NaN
Der JavaScript Number Typ ist ein doppelt-genauer 64-Bit-binr formatierter IEEE 754 Wert, hnlich wie double in Java oder C#. Das bedeutet, dass er Bruchwerte darstellen kann, es gibt jedoch einige Grenzen hinsichtlich der Gre und Przision der gespeicherten Zahl. Kurz gesagt, eine IEEE 754 Gleitkommazahl mit doppelter Genauigkeit verwendet 64 Bits, um 3 Teile darzustellen:
Die Mantisse (auch Signifikand genannt) ist der Teil der Zahl, der den tatschlichen Wert (bedeutende Ziffern) darstellt. Der Exponent ist die Potenz von 2, mit der die Mantisse multipliziert werden muss. Man kann es sich wie wissenschaftliche Notation vorstellen:
Number=(1)sign(1+mantissa)2exponent\text{Number} = ({-1})^{\text{sign}} \cdot (1 + \text{mantissa}) \cdot 2^{\text{exponent}}Die Mantisse wird mit 52 Bits gespeichert, die als Ziffern nach 1. in einer binren Bruchzahl interpretiert werden. Daher betrgt die Przision der Mantisse 2-52 (erhltlich ber Number.EPSILON), oder etwa 15 bis 17 signifikante Dezimalziffern; arithmetische Operationen ber diesem Przisionsniveau unterliegen dem Runden.
Der grte Wert, den eine Zahl halten kann, ist 21023 (2 - 2-52) (wobei der Exponent 1023 und die Mantisse 0.1111 in Basis 2 ist), was ber Number.MAX_VALUE erlangt werden kann. Werte, die hher sind, werden durch die spezielle Zahlkonstante Infinity ersetzt.
Ganze Zahlen knnen im Bereich von -253 + 1 bis 253 - 1 ohne Przisionsverlust dargestellt werden (erhltlich ber Number.MIN_SAFE_INTEGER und Number.MAX_SAFE_INTEGER), weil die Mantisse nur 53 Bits halten kann (einschlielich des fhrenden 1).
Mehr Details hierzu sind im ECMAScript-Standard beschrieben.
Viele eingebaute Operationen, die Zahlen erwarten, wandeln zuerst ihre Argumente in Zahlen um (was weitgehend der Grund ist, warum Number Objekte hnlich wie Zahlenprimitiven verhalten). Die Operation kann wie folgt zusammengefasst werden:
undefined wird zu NaN.null wird zu 0.true wird zu 1; false wird zu 0.NaN. Es gibt einige kleine Unterschiede im Vergleich zu einem tatschlichen Zahlenliteral:
0-Ziffer fhrt nicht dazu, dass die Zahl zu einem oktalen Literal wird (oder in strict mode abgelehnt wird).+ und - sind am Anfang des Strings erlaubt, um das Vorzeichen anzuzeigen. (In tatschlichem Code scheinen sie Teil des Literals zu sein, sind aber tatschlich separate unre Operatoren.) Das Vorzeichen darf jedoch nur einmal erscheinen und darf nicht von Leerzeichen gefolgt werden.Infinity und -Infinity werden als Literale erkannt. In tatschlichem Code sind sie globale Variablen.0 konvertiert.TypeError aus, um unbeabsichtigte implizite Typumwandlungen zu verhindern, die einen Przisionsverlust verursachen.TypeError aus.[Symbol.toPrimitive]() (mit "number" als Hinweis), valueOf() und toString() Methoden in dieser Reihenfolge aufgerufen werden. Der resultierende primitive Wert wird dann in eine Zahl konvertiert.Es gibt zwei Mglichkeiten, fast den gleichen Effekt in JavaScript zu erzielen.
+x fhrt genau die oben beschriebenen Typumwandlungsschritte durch, um x zu konvertieren.Number() Funktion: Number(x) verwendet den gleichen Algorithmus, um x zu konvertieren, auer dass BigInts keinen TypeError auslsen, sondern ihren Zahlenwert zurckgeben, mit mglichem Przisionsverlust.Number.parseFloat() und Number.parseInt() sind hnlich wie Number(), aber konvertieren nur Strings und haben leicht unterschiedliche Parsing-Regeln. Zum Beispiel erkennt parseInt() den Dezimalpunkt nicht, und parseFloat() erkennt das 0x Prfix nicht.
Einige Operationen erwarten Ganzzahlen, insbesondere diejenigen, die mit Array-/String-Indizes, Datum-/Zeitkomponenten und Zahlenradixen arbeiten. Nach Durchfhrung der obigen Typumwandlungsschritte wird das Ergebnis abgeschnitten, indem der Bruchteil entfernt wird. Wenn die Zahl Infinity ist, bleibt sie unverndert. Ist die Zahl NaN oder -0, wird 0 zurckgegeben. Das Ergebnis ist daher immer eine Ganzzahl (die nicht -0 ist) oder Infinity.
Bemerkenswert ist, dass undefined und null beim Umwandeln in Ganzzahlen zu 0 werden, weil undefined in NaN konvertiert wird, was auch zu 0 wird.
JavaScript hat einige Funktionen auf niedrigerer Ebene, die mit der binren Codierung von Ganzzahlen umgehen, insbesondere bitweise Operatoren und TypedArray Objekte. Bitweise Operatoren konvertieren die Operanden immer in 32-Bit-Ganzzahlen. In diesen Fllen wird nach der Konvertierung des Wertes in eine Zahl zunchst der Bruchteil abgeschnitten und dann die niedrigsten Bits in der Zweierkomplementcodierung der Ganzzahl genommen.
new Int32Array([1.1, 1.9, -1.1, -1.9]); // Int32Array(4) [ 1, 1, -1, -1 ]
new Int8Array([257, -257]); // Int8Array(2) [ 1, -1 ]
// 257 = 0001 0000 0001
// = 0000 0001 (mod 2^8)
// = 1
// -257 = 1110 1111 1111
// = 1111 1111 (mod 2^8)
// = -1 (as signed integer)
new Uint8Array([257, -257]); // Uint8Array(2) [ 1, 255 ]
// -257 = 1110 1111 1111
// = 1111 1111 (mod 2^8)
// = 255 (as unsigned integer)
Number()Erzeugt Number Objekte. Wenn sie als Funktion aufgerufen wird, gibt sie primitive Werte vom Typ Number zurck.
Number.EPSILONDas kleinste Intervall zwischen zwei darstellbaren Zahlen.
Number.MAX_SAFE_INTEGERDie maximale sichere Ganzzahl in JavaScript (253 - 1).
Number.MAX_VALUEDer grte positive darstellbare Wert.
Number.MIN_SAFE_INTEGERDie minimale sichere Ganzzahl in JavaScript (-(253 - 1)).
Number.MIN_VALUEDie kleinste positive darstellbare Zahldas heit, die positive Zahl, die null am nchsten kommt (ohne tatschlich null zu sein).
Number.NaNSpezieller "Not a Number"-Wert.
Number.NEGATIVE_INFINITYSpezieller Wert, der negative Unendlichkeit darstellt. Wird bei berlauf zurckgegeben.
Number.POSITIVE_INFINITYSpezieller Wert, der Unendlichkeit darstellt. Wird bei berlauf zurckgegeben.
Number.isFinite()Bestimmt, ob der bergebene Wert eine endliche Zahl ist.
Number.isInteger()Bestimmt, ob der bergebene Wert eine Ganzzahl ist.
Number.isNaN()Bestimmt, ob der bergebene Wert NaN ist.
Number.isSafeInteger()Bestimmt, ob der bergebene Wert eine sichere Ganzzahl ist (Zahl zwischen -(253 - 1) und 253 - 1).
Number.parseFloat()Dies ist das gleiche wie die globale parseFloat() Funktion.
Number.parseInt()Dies ist das gleiche wie die globale parseInt() Funktion.
Diese Eigenschaften sind auf Number.prototype definiert und werden von allen Number Instanzen geteilt.
Number.prototype.constructorDie Konstruktionsfunktion, die das Instanzobjekt erstellt hat. Fr Number Instanzen ist der Anfangswert der Number Konstruktor.
Number.prototype.toExponential()Gibt einen String zurck, der die Zahl in exponentielle Notation darstellt.
Number.prototype.toFixed()Gibt einen String zurck, der die Zahl in Festkommanotation darstellt.
Number.prototype.toLocaleString()Gibt einen String mit einer sprachsensitiven Darstellung dieser Zahl zurck. berschreibt die Object.prototype.toLocaleString() Methode.
Number.prototype.toPrecision()Gibt einen String zurck, der die Zahl mit einer angegebenen Przision in Festkomma- oder Exponentialnotation darstellt.
Number.prototype.toString()Gibt einen String zurck, der das angegebene Objekt in dem angegebenen Radix ("Basis") darstellt. berschreibt die Object.prototype.toString() Methode.
Number.prototype.valueOf()Gibt den primitiven Wert des angegebenen Objekts zurck. berschreibt die Object.prototype.valueOf() Methode.
Das folgende Beispiel verwendet die Eigenschaften des Number Objekts, um mehreren numerischen Variablen Werte zuzuweisen:
const biggestNum = Number.MAX_VALUE;
const smallestNum = Number.MIN_VALUE;
const infiniteNum = Number.POSITIVE_INFINITY;
const negInfiniteNum = Number.NEGATIVE_INFINITY;
const notANum = Number.NaN;
Im folgenden Beispiel werden die minimalen und maximalen Ganzzahlwerte angezeigt, die als Number Objekt dargestellt werden knnen.
const biggestInt = Number.MAX_SAFE_INTEGER; // (2**53 - 1) => 9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER; // -(2**53 - 1) => -9007199254740991
Beim Parsen von Daten, die in JSON serialisiert wurden, knnen Ganzzahlen, die auerhalb dieses Bereichs liegen, beim Zuordnen zum Number Typ durch den JSON-Parser beschdigt werden.
Ein mglicher Workaround besteht darin, String zu verwenden.
Grere Zahlen knnen mit dem BigInt Typ dargestellt werden.
Das folgende Beispiel konvertiert das Date Objekt in einen numerischen Wert, indem Number als Funktion verwendet wird:
const d = new Date("1995-12-17T03:24:00");
console.log(Number(d));
Dies protokolliert 819199440000.
Number("123"); // 123
Number("123") === 123; // true
Number("12.3"); // 12.3
Number("12.00"); // 12
Number("123e-1"); // 12.3
Number(""); // 0
Number(null); // 0
Number("0x11"); // 17
Number("0b11"); // 3
Number("0o11"); // 9
Number("foo"); // NaN
Number("100a"); // NaN
Number("-Infinity"); // -Infinity
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-number-objects |
Number-Verhaltens (mit Untersttzung fr binre und oktale Literale) in core-jsNaNMathBigIntNumberObject/FunctionDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |