Como posso verificar se um número está a flutuar ou inteiro?

Como descobrir que um número é "float" ou "integer"?

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

Tente estas funções para testar se um valor é um valor primitivo numérico que não tem parte fracionária e está dentro dos limites de tamanho do que pode ser representado como um número inteiro exato.

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

function isInteger(n) {
    return n === +n && n === (n|0);
}
Comentários (22)

Como outros mencionaram, você só tem duplas no JS. Então, como se define um número como um número inteiro? Basta verificar se o número arredondado é igual a si mesmo:

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

Depende realmente do que você quer alcançar. Se você quer " emule" digite fortemente as línguas, então sugiro que você não tente. Como outros mencionaram, todos os números têm a mesma representação (o mesmo tipo).

Usando algo como Claudiu fornecido:

isInteger( 1.0 )-> verdadeiro

o que parece bom para o senso comum, mas em algo como C você ficaria "falso".

Comentários (0)