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
function isInteger(x) { return typeof x === "number" && isFinite(x) && Math.floor(x) === x; }
function isFloat(x) { return !!(x % 1); }
// give it a spin
isInteger(1.0); // true
isFloat(1.0); // false
isFloat(1.2); // true
isInteger(1.2); // false
isFloat(1); // false
isInteger(1); // true
isFloat(2e+2); // false
isInteger(2e+2); // true
isFloat('1'); // false
isInteger('1'); // false
isFloat(NaN); // false
isInteger(NaN); // false
isFloat(null); // false
isInteger(null); // false
isFloat(undefined); // false
isInteger(undefined); // false
Hier sind effiziente Funktionen, die prüfen, ob der Wert eine Zahl ist oder sein kann sicher umgewandelt in eine Nummer:
function isNumber(value) {
if ((undefined === value) || (null === value)) {
return false;
}
if (typeof value == 'number') {
return true;
}
return !isNaN(value - 0);
}
Und für Ganzzahlen (würde false zurückgeben, wenn der Wert ein Float ist):
function isInteger(value) {
if ((undefined === value) || (null === value)) {
return false;
}
return value % 1 == 0;
}
Die Effizienz hier ist, dass parseInt (oder parseNumber) vermieden werden, wenn der Wert bereits eine Zahl ist. Beide Parsing-Funktionen immer zuerst in eine Zeichenkette konvertieren und dann versuchen, diese Zeichenkette zu parsen, was eine Verschwendung wäre, wenn der Wert bereits eine Zahl ist.
Vielen Dank an die anderen Beiträge hier, die weitere Ideen zur Optimierung liefern!
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?