Hoe controleer ik of een getal een float of een integer is?

Hoe bepaal je of een getal float of integer is?

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

Probeer deze functies om te testen of een waarde een primitieve getalwaarde is die geen breukdeel heeft en binnen de groottegrenzen ligt van wat kan worden voorgesteld als een exact geheel getal.

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

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

Zoals anderen al zeiden, je hebt alleen dubbels in JS. Dus hoe definieer je dat een getal een geheel getal is? Controleer gewoon of het afgeronde getal gelijk is aan zichzelf:

function isInteger(f) {
    return typeof(f)==="number" && Math.round(f) == f;
}
function isFloat(f) { return typeof(f)==="number" && !isInteger(f); }
Commentaren (3)

Het hangt er echt van af wat je wilt bereiken. Als je sterk getypeerde talen wilt emuleren, stel ik voor dat je het niet probeert. Zoals anderen al zeiden hebben alle getallen dezelfde representatie (hetzelfde type).

Met behulp van iets als Claudiu verstrekt:

isInteger( 1.0 ) -> true

wat er prima uitziet voor gezond verstand, maar in iets als C zou je false krijgen

Commentaren (0)