¿Cómo saber si un número es float
o integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
Pruebe estas funciones para comprobar si un valor es un valor primitivo numérico que no tiene parte fraccionaria y está dentro de los límites de tamaño de lo que se puede representar como un entero exacto.
function isFloat(n) {
return n === +n && n !== (n|0);
}
function isInteger(n) {
return n === +n && n === (n|0);
}
Como otros mencionaron, sólo tienes dobles en JS. Entonces, ¿cómo definir que un número es un entero? Sólo hay que comprobar si el número redondeado es igual a sí mismo:
function isInteger(f) {
return typeof(f)==="number" && Math.round(f) == f;
}
function isFloat(f) { return typeof(f)==="number" && !isInteger(f); }
Realmente depende de lo que quieras conseguir. Si quieres "emular" lenguajes fuertemente tipados entonces te sugiero que no lo intentes. Como otros mencionaron todos los números tienen la misma representación (el mismo tipo).
Usando algo como Claudiu proporcionó:
isInteger( 1.0 )
-> true
que parece bien para el sentido común, pero en algo como C obtendrías false
.