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));
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));
Die einfachste und sauberste vorecmaScript-6-Lösung (die auch robust genug ist, um false zurückzugeben, selbst wenn eine nicht-numerische Werte wie ein String oder null an die Funktion übergeben werden) wäre folgende:
function isInteger(x) { return (x^0) === x; }
Die folgende Lösung würde auch funktionieren, obwohl sie nicht so elegant ist wie die obige:
function isInteger(x) { return Math.round(x) === x; }
Beachten Sie, dass Math.ceil() oder Math.floor() ebenso gut verwendet werden könnten (anstelle von Math.round()) in der obigen Implementierung.
Oder alternativ:
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
Eine ziemlich häufige falsche Lösung ist die folgende:
function isInteger(x) { return parseInt(x, 10) === x; }
Obwohl dieser auf parseInt basierende Ansatz für viele Werte von x gut funktioniert, wird er bei großen x Werten versagen. Das Problem ist, dass parseInt() seinen ersten Parameter zuerst in einen String zwangsumwandelt, bevor er die Ziffern analysiert. Daher wird, sobald die Zahl hinreichend groß wird, ihre Zeichenketten-Repräsentation in exponentieller Form dargestellt (z.B. 1e+21). Dementsprechend wird parseInt() dann versuchen, 1e+21 zu analysieren, wird aber beim Eintreffen des e-Zeichens mit dem Analysieren aufhören und daher einen Wert von 1 zurückgeben. Beobachten Sie:
> String(1000000000000000000000)
'1e+21'
> parseInt(1000000000000000000000, 10)
1
> parseInt(1000000000000000000000, 10) === 1000000000000000000000
false
Warum hat noch niemand Number.isInteger()
erwähnt?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
Funktioniert perfekt für mich und löst das Problem mit dem NaN
, das eine Nummer beginnt.
Die akzeptierte Antwort hat bei mir nicht funktioniert, da ich nach int/float und Buchstaben prüfen musste. Versuchen Sie stattdessen dies, es wird sowohl für int/float als auch Buchstabenprüfung funktionieren
function is_int(value){
if( (parseInt(value) % 1 === 0 )){
return true;
}else{
return false;
}
}
Verwendung
is_int(44); // true
is_int("44"); // true
is_int(44.55); // true
is_int("44.55"); // true
is_int("aaa"); // false
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.