Come trovare che un numero sia float
o integrale
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
Provate queste funzioni per verificare se un valore è un numero primitivo che non ha parte frazionaria ed è entro i limiti di grandezza di ciò che può essere rappresentato come un intero esatto.
function isFloat(n) {
return n === +n && n !== (n|0);
}
function isInteger(n) {
return n === +n && n === (n|0);
}
Come altri hanno menzionato, avete solo doppi in JS. Quindi come si fa a definire un numero come un intero? Basta controllare se il numero arrotondato è uguale a se stesso:
function isInteger(f) {
return typeof(f)==="number" && Math.round(f) == f;
}
function isFloat(f) { return typeof(f)==="number" && !isInteger(f); }
Dipende davvero da ciò che si vuole ottenere. Se volete "emulare" linguaggi fortemente tipizzati allora vi suggerisco di non provarci. Come altri hanno menzionato, tutti i numeri hanno la stessa rappresentazione (lo stesso tipo).
Usando qualcosa come Claudiu ha fornito:
isInteger( 1.0 )
-> true
che sembra a posto per il senso comune, ma in qualcosa come C si otterrebbe false
.