524 Stimmen

Wie überprüft man, ob eine Variable in JavaScript eine Ganzzahl ist?

Wie überprüfe ich in JavaScript, ob eine Variable eine Ganzzahl ist, und gebe einen Alert aus, wenn nicht? Ich habe es versucht, aber es funktioniert nicht:

            var data = 22;
            alert(NaN(data));

33voto

Arun Joseph Punkte 2144

In ES6 wurden 2 neue Methoden für das Number-Objekt hinzugefügt.

In der Methode Number.isInteger() wird true zurückgegeben, wenn das Argument eine Ganzzahl ist, andernfalls wird false zurückgegeben.

Wichtiger Hinweis: Die Methode gibt auch für Gleitkommazahlen, die als Ganzzahl dargestellt werden können, true zurück. Z. B.: 5.0 (da es genau gleich 5 ist)

Beispielverwendung:

Number.isInteger(0);         // true
Number.isInteger(1);         // true
Number.isInteger(-100000);   // true
Number.isInteger(99999999999999999999999); // true

Number.isInteger(0.1);       // false
Number.isInteger(Math.PI);   // false

Number.isInteger(NaN);       // false
Number.isInteger(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger('10');      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

Number.isInteger(5.0);       // true
Number.isInteger(5.000000000000001); // false
Number.isInteger(5.0000000000000001); // true

31voto

Marcio Mazzucato Punkte 8273

Sie können einen einfachen regulären Ausdruck verwenden:

function isInt(value) {
    var er = /^-?[0-9]+$/;
    return er.test(value);
}

23voto

Phil Punkte 6441

Zunächst einmal ist NaN eine "Zahl" (ja, ich weiß, das ist seltsam, aber einfach mitmachen), und kein "Funktion".

Sie müssen sowohl den Typ der Variablen auf eine Zahl überprüfen als auch für ganzzahlig würde ich den Modulus verwenden.

alert(typeof data === 'number' && data%1 == 0);

15voto

Jhankar Mahbub Punkte 9404

Vorsicht beim Verwenden

num % 1

Leerer String ('') oder Boolean (true oder false) werden als Integer zurückgegeben. Möglicherweise möchten Sie das nicht tun

false % 1 // true
'' % 1 //true

Number.isInteger(data)

Number.isInteger(22); //true
Number.isInteger(22.2); //false
Number.isInteger('22'); //false

Eingebaute Funktion im Browser. Unterstützt ältere Browser nicht

Alternativen:

Math.round(num)=== num

Allerdings wird auch Math.round() für leeren String und Boolean fehlschlagen

9voto

user603749 Punkte 1394

Um zu überprüfen, ob der Integer wie vom Poster gewünscht ist:

if (+data===parseInt(data)) {return true} else {return false}

Beachten Sie das + vor data (konvertiert String in Zahl) und === für genau.

Hier sind Beispiele:

data=10
+data===parseInt(data)
true

data="10"
+data===parseInt(data)
true

data="10.2"
+data===parseInt(data)
false

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X