Wie man herausfindet, dass eine Zahl float
o integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
Wie man herausfindet, dass eine Zahl float
o integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
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 .
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;
};
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);
}
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 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.
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 eineNumber
.</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.0 Stimmen
@rvighne, Die Frage bezieht sich auf "float", nicht auf "real". Wie auch immer, Reale sind irrelevant, weil Computer nur Folgendes darstellen können berechenbare Zahlen .
0 Stimmen
@MikeSamuel Sorry, ich meinte ganze Zahlen und schwimmt sind reelle Zahlen. Und außerdem habe ich gesagt, dass Ints und Floats Teil von reelle Zahlen, nicht, dass sie alle reellen Zahlen darstellen können. Im Grunde will ich damit sagen, dass Infinity keine Zahl ist und es egal sein sollte, ob es sich um einen Float oder Int handelt.
2 Stimmen
@rvighne, ich denke, wir sind uns einig, dass die Fac
0 Stimmen
@"" e
0 Stimmen
C m )
0 Stimmen
A e
1 Stimmen
Y
isInteger
. ici .6 Stimmen
Halten Sie
1.0
Integer oder Float?