869 Stimmen

Wie prüfe ich, ob es sich bei einer Zahl um eine Fließkommazahl oder eine ganze Zahl handelt?

Wie man herausfindet, dass eine Zahl float o integer ?

1.25 --> float  
1 --> integer  
0 --> integer  
0.25 --> float

55 Stimmen

Ich verstehe, worauf Sie hinauswollen, aber nur um das klarzustellen: <nit-pick> In JavaScript gibt es keine unterschiedlichen numerischen Typen Integer und Float. Jede Zahl in JavaScript ist einfach eine Number . </nit-pick>

5 Stimmen

Ist Infinity eine ganze Zahl oder ein nicht ganzzahliger Wert? Die Antworten sind in dieser Hinsicht ziemlich gleichmäßig verteilt.

14 Stimmen

@MikeSamuel Um mathematisch genau zu sein: Da Unendlich keine reelle Zahl ist und alle ganzen Zahlen reelle Zahlen sind, Infinity kann nicht als ganze Zahl betrachtet werden.

1507voto

kennebec Punkte 98551

Prüfen, ob bei der Division durch 1 ein Rest übrig bleibt:

function isInt(n) {
   return n % 1 === 0;
}

Wenn Sie nicht wissen, dass das Argument eine Zahl ist, brauchen Sie zwei Tests:

function isInt(n){
    return Number(n) === n && n % 1 === 0;
}

function isFloat(n){
    return Number(n) === n && n % 1 !== 0;
}

Update 2019 5 Jahre, nachdem diese Antwort geschrieben wurde, wurde eine Lösung in ECMA Script 2015 standardisiert. Diese Lösung wird behandelt in dieser Antwort .

172voto

paperstreet7 Punkte 1868

Es gibt eine Methode namens Number.isInteger() die derzeit in allen Programmen außer dem IE implementiert ist. MDN bietet auch ein Polyfill für andere Browser:

Number.isInteger = Number.isInteger || function(value) {
  return typeof value === 'number' && 
    isFinite(value) && 
    Math.floor(value) === value;
};

Für die meisten Anwendungsfälle ist es jedoch besser, wenn Sie Number.isSafeInteger die auch prüft, ob der Wert so hoch/niedrig ist, dass die Nachkommastellen ohnehin verloren gegangen wären. MDN hat auch ein Polyfil für diesen Zweck. (Sie benötigen auch die isInteger pollyfill oben).

if (!Number.MAX_SAFE_INTEGER) {
    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}
Number.isSafeInteger = Number.isSafeInteger || function (value) {
   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};

167voto

Dagg Nabbit Punkte 72150

Probieren Sie diese Funktionen aus, um zu prüfen, ob es sich bei einem Wert um einen primitiven Zahlenwert handelt, der keine Nachkommastellen hat und innerhalb der Größengrenzen dessen liegt, was als exakte ganze Zahl dargestellt werden kann.

function isFloat(n) {
    return n === +n && n !== (n|0);
}

function isInteger(n) {
    return n === +n && n === (n|0);
}

94voto

warfares Punkte 977

Warum nicht etwas in dieser Art?

var isInt = function(n) { return parseInt(n) === n };

32voto

Marcio Mazzucato Punkte 8273

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

function isInt(value) {

    var er = /^-?[0-9]+$/;

    return er.test(value);
}

Sie können aber auch die unten aufgeführten Funktionen verwenden, je nach Bedarf. Sie wurden entwickelt von der PHPJS-Projekt .

is_int() => Prüfung, ob der Variablentyp eine ganze Zahl ist und ob ihr Inhalt eine ganze Zahl ist

is_float() => Prüfung, ob der Variablentyp Float ist und ob sein Inhalt Float ist

ctype_digit() => Prüfung, ob der Variablentyp ein String ist und ob sein Inhalt nur Dezimalstellen hat

Aktualisierung 1

Jetzt werden auch negative Zahlen geprüft, danke für @ChrisBartley Kommentar ¡!

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