JavaScript -Zahlen
JavaScript hat nur einen Zahlentyp. Zahlen können mit oder ohne Dezimalstellen geschrieben werden.
Beispiel
let x = 3.14; // A number with decimals
let y = 3; // A number without decimals
Extra große oder extra kleine Zahlen können mit wissenschaftlicher (Exponenten-) Notation geschrieben werden:
Beispiel
let x = 123e5; // 12300000
let y = 123e-5; // 0.00123
JavaScript-Zahlen sind immer 64-Bit-Gleitkommazahlen
Im Gegensatz zu vielen anderen Programmiersprachen definiert JavaScript keine verschiedenen Arten von Zahlen, wie Ganzzahlen, kurze, lange, Fließkommazahlen usw.
JavaScript-Zahlen werden gemäß dem internationalen Standard IEEE 754 immer als Gleitkommazahlen mit doppelter Genauigkeit gespeichert.
Dieses Format speichert Zahlen in 64 Bit, wobei die Zahl (der Bruch) in den Bits 0 bis 51, der Exponent in den Bits 52 bis 62 und das Vorzeichen in Bit 63 gespeichert wird:
Wert (auch bekannt als Bruch/Mantisse) | Exponent | Unterschrift |
---|---|---|
52 Bit (0 - 51) | 11 Bit (52 - 62) | 1 Bit (63) |
Ganzzahlige Genauigkeit
Ganze Zahlen (Zahlen ohne Punkt oder Exponentenschreibweise) sind auf bis zu 15 Stellen genau.
Beispiel
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
Die maximale Anzahl von Dezimalstellen beträgt 17.
Schwebende Präzision
Fließkomma-Arithmetik ist nicht immer 100% genau:
let x = 0.2 + 0.1;
Um das obige Problem zu lösen, hilft es zu multiplizieren und zu dividieren:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Hinzufügen von Zahlen und Zeichenfolgen
WARNUNG !!
JavaScript verwendet den +-Operator sowohl für die Addition als auch für die Verkettung.
Zahlen werden hinzugefügt. Zeichenfolgen werden verkettet.
Wenn Sie zwei Zahlen addieren, ist das Ergebnis eine Zahl:
Beispiel
let x = 10;
let y = 20;
let z = x + y;
Wenn Sie zwei Zeichenfolgen hinzufügen, ist das Ergebnis eine Zeichenfolgenverkettung:
Beispiel
let x = "10";
let y = "20";
let z = x + y;
Wenn Sie eine Zahl und eine Zeichenfolge hinzufügen, ist das Ergebnis eine Zeichenfolgenverkettung:
Beispiel
let x = 10;
let y = "20";
let z = x + y;
Wenn Sie eine Zeichenfolge und eine Zahl hinzufügen, ist das Ergebnis eine Zeichenfolgenverkettung:
Beispiel
let x = "10";
let y = 20;
let z = x + y;
Ein häufiger Fehler ist zu erwarten, dass dieses Ergebnis 30 ist:
Beispiel
let x = 10;
let y = 20;
let z = "The result is: " + x + y;
Ein häufiger Fehler ist zu erwarten, dass dieses Ergebnis 102030 ist:
Beispiel
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
Der JavaScript-Interpreter arbeitet von links nach rechts.
Zuerst wird 10 + 20 addiert, weil x und y beides Zahlen sind.
Dann wird 30 + "30" verkettet, weil z ein String ist.
Numerische Zeichenfolgen
JavaScript-Strings können numerischen Inhalt haben:
let x = 100; // x is a number
let y = "100"; // y is a
string
JavaScript versucht bei allen numerischen Operationen, Strings in Zahlen umzuwandeln:
Das wird funktionieren:
let x = "100";
let y = "10";
let z = x / y;
Das wird auch funktionieren:
let x = "100";
let y = "10";
let z = x * y;
Und das wird funktionieren:
let x = "100";
let y = "10";
let z = x - y;
Aber das wird nicht funktionieren:
let x = "100";
let y = "10";
let z = x + y;
Im letzten Beispiel verwendet JavaScript den +-Operator, um die Strings zu verketten.
NaN - Keine Zahl
NaN
ist ein für JavaScript reserviertes Wort, das angibt, dass eine Zahl keine gültige Zahl ist.
Der Versuch, mit einer nicht numerischen Zeichenfolge zu rechnen, führt zu NaN
(Not a Number):
Beispiel
let x = 100 / "Apple";
Wenn die Zeichenfolge jedoch einen numerischen Wert enthält, ist das Ergebnis eine Zahl:
Beispiel
let x = 100 / "10";
Sie können die globale JavaScript-Funktion verwenden isNaN()
, um herauszufinden, ob ein Wert keine Zahl ist:
Beispiel
let x = 100 / "Apple";
isNaN(x);
Achten Sie auf NaN
. Wenn Sie NaN
eine mathematische Operation verwenden, lautet das Ergebnis ebenfalls NaN
:
Beispiel
let x = NaN;
let y = 5;
let z = x + y;
Oder das Ergebnis könnte eine Verkettung wie NaN5 sein:
Beispiel
let x = NaN;
let y = "5";
let z = x + y;
NaN
ist eine Zahl: typeof NaN
gibt zurück number
:
Beispiel
typeof NaN;
Unendlichkeit
Infinity
(oder -Infinity
) ist der Wert, den JavaScript zurückgibt, wenn Sie eine Zahl außerhalb der größtmöglichen Zahl berechnen.
Beispiel
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
Division durch 0 (Null) erzeugt auch Infinity
:
Beispiel
let x = 2 / 0;
let y = -2 / 0;
Infinity
ist eine Zahl: typeof Infinity
gibt zurück number
.
Beispiel
typeof Infinity;
Hexadezimal
JavaScript interpretiert numerische Konstanten als hexadezimal, wenn ihnen 0x vorangestellt ist.
Beispiel
let x = 0xFF;
Schreiben Sie niemals eine Zahl mit führender Null (wie 07).
Einige JavaScript-Versionen interpretieren Zahlen als oktal, wenn sie mit führender Null geschrieben werden.
Standardmäßig zeigt JavaScript Zahlen als Dezimalstellen zur Basis 10 an .
Aber Sie können die Methode verwenden, um Zahlen von der Basis 2
bis zur Basis 36toString()
auszugeben .
Hexadezimal ist Basis 16 . Dezimal ist Basis 10 . Oktal ist die Basis 8 . Binär ist Basis 2 .
Beispiel
let myNumber = 32;
myNumber.toString(10);
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
JavaScript-Zahlen als Objekte
Normalerweise sind JavaScript-Zahlen primitive Werte, die aus Literalen erstellt wurden:
let x = 123;
Zahlen können aber auch mit dem Schlüsselwort als Objekte definiert werden new
:
let y = new Number(123);
Beispiel
let x = 123;
let y = new Number(123);
Erstellen Sie keine Number-Objekte.
Das new
Schlüsselwort verkompliziert den Code und verlangsamt die Ausführungsgeschwindigkeit.
Zahlenobjekte können zu unerwarteten Ergebnissen führen:
Bei Verwendung des ==
Operators sind x und y gleich :
let x = 500;
let y = new Number(500);
Bei Verwendung des ===
Operators sind x und y ungleich .
let x = 500;
let y = new Number(500);
Beachten Sie den Unterschied zwischen (x==y)
und (x===y)
.
(x == y)
richtig oder falsch?
let x = new Number(500);
let y = new Number(500);
(x === y)
richtig oder falsch?
let x = new Number(500);
let y = new Number(500);
Comparing two JavaScript objects always returns false.
Complete JavaScript Number Reference
For a complete Number reference, visit our:
Complete JavaScript Number Reference.
The reference contains descriptions and examples of all Number properties and methods.