Hvordan sjekker jeg om et tall er et flyt- eller heltall?

Hvordan finne ut om et tall er float eller integer?

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

Prøv disse funksjonene for å teste om en verdi er en primitiv tallverdi som ikke har noen brøkdel og er innenfor størrelsesgrensene for hva som kan representeres som et eksakt heltall.

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

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

Som andre har nevnt, finnes det bare dobbelttall i JS. Så hvordan definerer du at et tall er et heltall? Bare sjekk om det avrundede tallet er lik seg selv:

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

Det kommer helt an på hva du ønsker å oppnå. Hvis du ønsker å "emulere" sterkt typede språk, foreslår jeg at du ikke prøver. Som andre har nevnt, har alle tall samme representasjon (samme type).

Ved å bruke noe som Claudiu ga:

isInteger( 1.0 ) -> true

som ser bra ut for sunn fornuft, men i noe som C ville du fått false.

Kommentarer (0)