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

Wie findet man heraus, ob eine Zahl eine "Fließkommazahl" oder eine "Ganzzahl" ist?

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

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);
}
Kommentare (22)

Wie bereits erwähnt, gibt es in JS nur Doubles. 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); }
Kommentare (3)

Es hängt wirklich davon ab, was Sie erreichen wollen. Wenn Sie stark typisierte Sprachen "emulieren" wollen, dann schlage ich vor, dass Sie es nicht versuchen. Wie bereits erwähnt, haben alle Zahlen die gleiche Darstellung (den gleichen Typ).

Mit etwas wie Claudiu zur Verfügung gestellt:

istGanzzahl( 1.0 ) -> wahr

was für den gesunden Menschenverstand gut aussieht, aber in etwas wie C würde man false bekommen

Kommentare (0)