JavaScript-Zahlen

JavaScript hat nur einen Numeriktyp.

Bei der Schreibung einer Zahl kann ein Dezimalpunkt hinzugefügt werden oder nicht.

JavaScript Zahl

JavaScript-Werte können sowohl mit als auch ohne Dezimalpunkt notiert werden:

Beispiel

var x = 3.14;    // Wert mit Dezimalpunkt
var y = 3;       // Wert ohne Dezimalpunkt

Probieren Sie es selbst aus

Große oder kleine Zahlen können in wissenschaftlicher Notation geschrieben werden:

Beispiel

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

Probieren Sie es selbst aus

JavaScript-Zahlen sind immer 64-Bit-Fließkommazahlen

Im Gegensatz zu vielen anderen Programmiersprachen definiert JavaScript keine verschiedenen Arten von Zahlen, wie Ganzzahlen, kurze, lange, Fließkommazahlen usw.

JavaScript speichert numerische Werte immer als Double-Precision-Fließkommazahlen, gemäß dem internationalen IEEE 754-Standard.

Dieser Format speichert die numerischen Werte in 64 Bit, wobei die Stellen 0 bis 51 die Ziffern (Teile) und die Stellen 52 bis 62 den Exponenten, die Stelle 63 das Zeichen speichern:

Wert(aka Fraction/Mantissa) Exponent Zeichen
52 Bits(0 - 51) 11 Bits (52 - 62) 1 Bit (63)

Genauigkeit

Ganze Zahlen (ohne Exponenten oder wissenschaftliche Notation) werden auf 15 Stellen genau berechnet.

Beispiel

var x = 999999999999999;   // x wird 999999999999999 sein
var y = 9999999999999999;  // y wird 10000000000000000 sein

Probieren Sie es selbst aus

Das maximale Dezimalzahl ist 17 Stellen, aber die Fließkommadarstellung ist nicht immer 100% genau:

Beispiel

var x = 0.2 + 0.1;         // x wird 0.30000000000000004 sein

Probieren Sie es selbst aus

Die Verwendung von Multiplikation und Division hilft, das obige Problem zu lösen:

Beispiel

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x wird 0.3 sein

Probieren Sie es selbst aus

Zahl und Zeichenkette addieren

Warnung !!

JavaScript verwendet den Plus-Operator (+) sowohl für die Addition als auch für die Kollage.

Zahlen werden mit der Addition verwendet. Zeichenketten mit der Kollage.

Fügen Sie zwei Zahlen hinzu, das Ergebnis wird eine Zahl sein:

Beispiel

var x = 10;
var y = 20;
var z = x + y;           // z wird 30 (eine Zahl) sein

Probieren Sie es selbst aus

Fügen Sie zwei Zeichenketten hinzu, das Ergebnis ist eine Zeichenkettenkollage:

Beispiel

var x = "10";
var y = "20";
var z = x + y;           // z wird 1020 (String) sein

Probieren Sie es selbst aus

Fügen Sie eine Zahl und eine Zeichenkette hinzu, das Ergebnis ist auch eine Zeichenkettenkollage:

Beispiel

var x = 10;
var y = "20";
var z = x + y;           // z wird 1020 (eine Zeichenkette) sein

Probieren Sie es selbst aus

Wenn Sie eine Summe aus einem String und einer Zahl addieren, wird das auch eine String-Kettenoperation sein:

Beispiel

var x = "10";
var y = 20;
var z = x + y;           // z wird 1020 (String) sein

Probieren Sie es selbst aus

Ein häufiger Fehler ist die Annahme, dass das Ergebnis 30 sein sollte:

Beispiel

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

Probieren Sie es selbst aus

Ein häufiger Fehler ist die Annahme, dass das Ergebnis 102030 sein sollte:

Beispiel

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

Probieren Sie es selbst aus

JavaScript führt die Kompilierung von links nach rechts durch.

weil x und y beide Zahlen sind, wird 10 + 20 addiert.

weil z ein String ist, wird "30" + "30" zusammengefügt.

Zahlen-String

JavaScript-Strings können numerische Inhalte haben:

var x = 100;         // x ist eine Zahl
var y = "100";       // y ist ein String

In allen numerischen Operationen versucht JavaScript, Strings in Zahlen umzuwandeln:

Dieser Fall funktioniert so:

var x = "100";
var y = "10";
var z = x / y;       // z wird 10 sein

Probieren Sie es selbst aus

Dieser Fall wird auch so funktionieren:

var x = "100";
var y = "10";
var z = x * y;       // z wird 1000 sein

Probieren Sie es selbst aus

Dieser Fall funktioniert so:

var x = "100";
var y = "10";
var z = x - y;      // z wird 90 sein

Probieren Sie es selbst aus

aber dieser Fall wird nicht wie oben funktionieren:

var x = "100";
var y = "10";
var z = x + y;       // z wird nicht 110 sein (sondern 10010)

Probieren Sie es selbst aus

Im letzten Beispiel führt JavaScript den +-Operator für Strings zusammen.

NaN - nicht numerisch

NaN ist ein reserviertes Wort in JavaScript, das angibt, dass eine Zahl keine gültige Zahl ist.

Wenn Sie eine Division mit einem nicht-numerischen String versuchen, erhalten Sie NaN (Not a Number):

Beispiel

var x = 100 / "Apple";  // x wird NaN (Not a Number) sein

Probieren Sie es selbst aus

aber wenn der String numerische Werte enthält, wird das Ergebnis eine Zahl sein:

Beispiel

var x = 100 / "10";     // x wird 10 sein

Probieren Sie es selbst aus

Sie können die globale JavaScript-Funktion verwenden isNaN() um zu bestimmen, ob ein Wert eine Zahl ist:

Beispiel

var x = 100 / "Apple";
isNaN(x);               // zurückgibt true, weil x kein Zahl ist

Probieren Sie es selbst aus

vorsichtig sein NaN。Wenn Sie in mathematischen Operationen NaNdann wird das Ergebnis auch NaN:

Beispiel

var x = NaN;
var y = 5;
var z = x + y;         // z wird NaN sein

Probieren Sie es selbst aus

Das Ergebnis könnte eine Kettenschaltung sein:

Beispiel

var x = NaN;
var y = "5";
var z = x + y;         // z wird NaN5 sein

Probieren Sie es selbst aus

NaN ist eine Zahl,typeof NaN gibt zurück number:

Beispiel

typeof NaN;             // gibt "number" zurück

Probieren Sie es selbst aus

Infinity

Infinity oder -Infinity)ist der Wert, der von JavaScript zurückgegeben wird, wenn bei der Berechnung von Zahlen der Bereich der möglichen Zahlenwerte überschritten wird.

Beispiel

var myNumber = 2;
while (myNumber != Infinity) {          // führt bis Infinity aus
    myNumber = myNumber * myNumber;
}

Probieren Sie es selbst aus

Das Teilen durch 0 (Null) erzeugt auch Infinity:

Beispiel

var x =  2 / 0;          // x wird Infinity sein
var y = -2 / 0;          // y wird -Infinity sein

Probieren Sie es selbst aus

Infinity ist eine Zahl:typeOf Infinity gibt zurück number.

Beispiel

typeof Infinity;        // gibt "number" zurück

Probieren Sie es selbst aus

Hexadezimal

JavaScript interpretiert Zahlen mit dem Präfix 0x Zahlkonstanten werden als Hexadezimal interpretiert.

Beispiel

var x = 0xFF;             // x wird 255 sein.

Probieren Sie es selbst aus

Schreiben Sie niemals Zahlen mit führenden Nullen (z.B. 07).

Einige JavaScript-Versionen interpretieren Zahlen mit führenden Nullen als Oktal.

Standardmäßig zeigt Javascript Zahlen in dezimaler Bruchkommazahl an.

Sie können jedoch toString() Diese Methode gibt die Zahl in Hexadezimal-, Octal- oder Binärform aus.

Beispiel

var myNumber = 128;
myNumber.toString(16);     // gibt 80 zurück
myNumber.toString(8);      // gibt 200 zurück
myNumber.toString(2);      // gibt 10000000 zurück

Probieren Sie es selbst aus

Zahlen können auch Objekte sein

Normalerweise werden JavaScript-Zahlen durch Literalwerte erstellt: var x = 123

Es kann aber auch durch den Schlüsselwort new definiert als Objekt: var y = new Number(123)

Beispiel

var x = 123;
var y = new Number(123);
// typeof x gibt number zurück
// typeof y gibt object zurück

Probieren Sie es selbst aus

Erstellen Sie keine numerischen Objekte. Dies kann die Ausführungszeit verlängern.

new Der Schlüsselwort verkompliziert den Code und führt zu unerwarteten Ergebnissen:

Wenn Sie == Nach dem Gleichheitsoperator erscheinen gleiche Zahlen gleich:

Beispiel

var x = 500;             
var y = new Number(500);
// (x == y) ist wahr, weil x und y gleiche Werte haben

Probieren Sie es selbst aus

Wenn Sie === Nach dem Gleichheitsoperator werden gleiche Zahlen ungleich, weil === Operatoren müssen sowohl Typ als auch Wert gleich sein.

Beispiel

var x = 500;             
var y = new Number(500);
// (x === y) ist falsch, weil x und y unterschiedliche Typen haben

Probieren Sie es selbst aus

Selbst noch schlimmer. Objekte können nicht verglichen werden:

Beispiel

var x = new Number(500);             
var y = new Number(500);
// (x == y) ist falsch, weil Objekte nicht verglichen werden können

Probieren Sie es selbst aus

JavaScript-Objekte können nicht verglichen werden.