Aber brauchen wir diese Funktion? Können wir nicht einfach den Vergleich === NaN verwenden? Die Antwort ist leider nein. Der Wert NaN ist insofern einzigartig, als er mit nichts gleich ist, auch nicht mit sich selbst:

alert( NaN === NaN ); // false

  • isFinite(value) wandelt sein Argument in eine Zahl um und gibt true zurück, wenn es eine reguläre Zahl ist, nicht NaN/Infinity/-Infinity:

    alert( isFinite("15") ); // truealert( isFinite("str") ); // false, because a special value: NaNalert( isFinite(Infinity) ); // false, because a special value: Infinity

  • Manchmal wird isFinite verwendet, um zu überprüfen, ob ein String-Wert eine reguläre Zahl ist:

    let num = +prompt("Enter a number", '');// will be true unless you enter Infinity, -Infinity or not a numberalert( isFinite(num) );

    Bitte beachten Sie, dass ein leerer oder ein mit Leerzeichennur eine leere Zeichenkette als 0 in allen numerischen Funktionen einschließlich isFinite behandelt wird.

    Vergleich mit Object.is

    Es gibt eine spezielle eingebaute Methode Object.is, die Werte wie === vergleicht, aber für zwei Randfälle zuverlässiger ist:

    1. Es funktioniert mit NaNObject.is(NaN, NaN) === true, das ist eine gute Sache.
    2. Die Werte 0 und -0 sind unterschiedlich: Object.is(0, -0) === false, technisch gesehen stimmt das, denn intern hat die Zahl ein Vorzeichenbit, das unterschiedlich sein kann, auch wenn alle anderen Bits Nullen sind.

    In allen anderen Fällen ist Object.is(a, b) dasselbe wie a === b.

    Diese Art des Vergleichs wird oft in JavaScript-Spezifikationen verwendet. Wenn ein interner Algorithmus zwei Werte daraufhin vergleichen muss, ob sie genau gleich sind, verwendet er Object.is (intern SameValue genannt).

    parseInt und parseFloat

    Die numerische Konvertierung mit einem Plus + oder Number() ist streng. Wenn ein Wert nicht genau eine Zahl ist, schlägt er fehl:

    alert( +"100px" ); // NaN

    Die einzige Ausnahme sind Leerzeichen am Anfang oder am Ende der Zeichenkette, da sie ignoriert werden.

    Aber im realen Leben haben wir oft Werte in Einheiten, wie "100px" oder "12pt" in CSS. Außerdem steht in vielen Ländern das Währungssymbol hinter dem Betrag, so dass wir "19€" haben und daraus einen numerischen Wert extrahieren möchten.

    Dafür sind parseInt und parseFloat da.

    Sie „lesen“ eine Zahl aus einem String, bis sie nicht mehr können. Im Falle eines Fehlers wird die gesammelte Zahl zurückgegeben. Die Funktion parseInt liefert eine Ganzzahl, während parseFloat eine Fließkommazahl zurückgibt:

    alert( parseInt('100px') ); // 100alert( parseFloat('12.5em') ); // 12.5alert( parseInt('12.3') ); // 12, only the integer part is returnedalert( parseFloat('12.3.4') ); // 12.3, the second point stops the reading

    Es gibt Situationen, in denen parseInt/parseFloatNaN zurückgibt. Das passiert, wenn keine Ziffern gelesen werden konnten:

    alert( parseInt('a123') ); // NaN, the first symbol stops the process

    Das zweite Argument von parseInt(str, radix)

    Die Funktion parseInt() hat einen optionalen zweiten Parameter. Er gibt die Basis des Zahlensystems an, so dass parseInt auch Zeichenketten mit Hexadezimalzahlen, Binärzahlen und so weiter parsen kann:

    alert( parseInt('0xff', 16) ); // 255alert( parseInt('ff', 16) ); // 255, without 0x also worksalert( parseInt('2n9c', 36) ); // 123456

    Weitere mathematische Funktionen

    JavaScript hat ein eingebautes Math-Objekt, das eine kleine Bibliothek von mathematischen Funktionen und Konstanten enthält.

    Ein paar Beispiele:

    Math.random()

    Gibt eine Zufallszahl von 0 bis 1 zurück (1 nicht eingeschlossen).

    alert( Math.random() ); // 0.1234567894322alert( Math.random() ); // 0.5435252343232alert( Math.random() ); // ... (any random numbers)

    Math.max(a, b, c...)Math.min(a, b, c...)

    Gibt das größte/kleinste aus einer beliebigen Anzahl von Argumenten zurück.

    alert( Math.max(3, 5, -10, 0, 1) ); // 5alert( Math.min(1, 2) ); // 1

    Math.pow(n, power)

    Returns n raised to the given power.

    alert( Math.pow(2, 10) ); // 2 in power 10 = 1024

    Es gibt noch weitere Funktionen und Konstanten im Math Objekt, darunter auch die Trigonometrie, die Sie in den Docs zum Math-Objekt finden können.

    Zusammenfassung

    Um Zahlen mit vielen Nullen zu schreiben:

    • Hängen Sie "e" mit der Anzahl der Nullen an die Zahl an. Beispiel: 123e6 ist dasselbe wie 123 mit 6 Nullen 123000000.
    • Eine negative Zahl nach "e" bewirkt, dass die Zahl mit gegebenen Nullen durch 1 geteilt wird. Z.B. 123e-6 bedeutet 0.000123123 Millionstel).

    Für verschiedene Zahlensysteme:

    • Kann Zahlen direkt in Hex- (0x), Oktal- (0o) und Binärsystemen (0b) schreiben.
    • parseInt(str, base) parst die Zeichenkette str in eine Ganzzahl im Ziffernsystem mit gegebenem base2 ≤ base ≤ 36.
    • num.toString(base) konvertiert eine Zahl in eine Zeichenkette im Zahlensystem mit dem angegebenen base.

    Für die Konvertierung von Werten wie 12pt und 100px in eine Zahl:

    • Verwenden Sie parseInt/parseFloat für die „weiche“ Konvertierung, die eine Zahl aus einem String liest und dann den Wert zurückgibt, den sie vor dem Fehler lesen konnten.

    Für Brüche:

    • Runden Sie mit Math.floorMath.ceilMath.truncMath.round oder num.toFixed(precision).
    • Denken Sie daran, dass es einen Präzisionsverlust gibt, wenn Sie mit Brüchen arbeiten.

    Weitere mathematische Funktionen:

    • Sehen Sie sich das Math-Objekt an, wenn Sie es brauchen. Die Bibliothek ist sehr klein, kann aber grundlegende Bedürfnisse abdecken.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.