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
Wie bereits erwähnt, gibt es in JS nur Doppelgänger. Wie definieren Sie also, dass eine Zahl eine ganze Zahl ist? Prüfen Sie einfach, ob die gerundete Zahl gleich sich selbst ist:
function isInteger(f) {
return typeof(f)==="number" && Math.round(f) == f;
}
function isFloat(f) { return typeof(f)==="number" && !isInteger(f); }
if( n === parseInt(n) ) ...
Macht Sinn: wenn JavaScript kann etwas in eine ganze Zahl zu konvertieren, und durch die Umwandlung wird es genau die gleiche Sache, dann Ihr Operand war eine ganze Zahl.
x = 1; x===parseInt(x); // true
x = "1"; x===parseInt(x); // false
x = 1.1; x===parseInt(x); // false, obviously
// BUT!
x = 1.0; x===parseInt(x); // true, because 1.0 is NOT a float!
Das verwirrt viele Menschen. Immer wenn etwas 0 ist, ist es kein Float mehr. Es ist eine ganze Zahl. Oder man kann es einfach "ein numerisches Ding" nennen, denn es gibt keine strikte Unterscheidung wie damals in C. Gute alte Zeiten.
Alles, was Sie also tun können, ist, die Tatsache, dass 1,000 eine ganze Zahl ist, zu akzeptieren.
Es wurde eine Bemerkung über große Zahlen gemacht. Riesige Zahlen stellen für diesen Ansatz KEIN Problem dar; wenn parseInt nicht in der Lage ist, die Zahl zu verarbeiten (weil sie zu groß ist), gibt es etwas anderes zurück als den tatsächlichen Wert, so dass der Test FALSE zurückgibt. Sehen Sie:
var a = 99999999999999999999;
var b = 999999999999999999999; // just one more 9 will kill the show!
var aIsInteger = ( a===parseInt(a) )?"a is ok":"a fails";
var bIsInteger = ( b===parseInt(b) )?"b is ok":"b fails";
alert(aIsInteger+"; "+bIsInteger);
Ich habe dies 2014 im IE8 und 2021 in Chrome getestet, beide geben "a ist ok; b schlägt fehl" zurück, was bedeutet, dass eine Zahl, die zu groß ist, keine ganze Zahl mehr sein kann.
20 Ziffern sollten für jeden reichen , um einen Klassiker zu zitieren.
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?