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);
}
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); }
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
.