Olá, Wilton. Tudo bom?
Para ter certeza, você deseja obter um array representando somente as casas decimais de um número após a vírgula?
Por exemplo:
1.123 -> retorna [ 1, 2, 3 ]
1.123456 -> retorna [ 1, 2, 3, 4, 5, 6 ]
Caso seja este o problema, podemos implementar a função contador
, desta maneira:
function contador(arg) {
var ehNumero = typeof(arg) == 'number';
if(!ehNumero) {
return false;
}
var comoTexto = '' + arg; //truque para convertermos o número para uma string
var numeroAposCasaDecimal = comoTexto.split('.')[1]; //o Split quebra o texto à partir do separador definido em seu argumento
if(!numeroAposCasaDecimal) { // Verifica se uma porção não inteira (por exemplo 1.213, onde 213 é a parte quebrada)
return false;
}
return numeroAposCasaDecimal.split(''); //Damos um split, usando o "vazio" como separador, de modo que todos os caracteres serão divididos
}
É necessário conhecimento sobre javascript para esta implementação ficar clara. Se houver alguma dúvida, por favor, me avise que eu explico :)
Mas, perceba que é impossível diferenciar o literal numérico 1
de 1.0
, uma vez que no Javascript os números inteiros de decimais são representados da mesma forma como o tipo number
- em oposição à linguagens como o Java ou C#.
Com esta limitação, o que você pode fazer é esperar sempre um texto na função contador
e deixar de lado a verificação do tipo numérico, ficando desta forma:
function contador_Texto(arg) {
var comoTexto = '' + arg; //truque para convertermos o número para uma string
var numeroAposCasaDecimal = comoTexto.split('.')[1]; //o Split quebra o texto à partir do separador definido em seu argumento
if(!numeroAposCasaDecimal) { // Verifica se uma porção não inteira (por exemplo 1.213, onde 213 é a parte quebrada)
return false;
}
if(numeroAposCasaDecimal == '0') {
return true;
}
return numeroAposCasaDecimal.split(''); //Damos um split, usando o "vazio" como separador, de modo que todos os caracteres serão divididos
}
Desta forma, conseguimos diferenciar o texto '1'
de '1.0'
:
contador_Texto(1.123); // retorna ["1", "2", "3"];
contador_Texto(1); // retorna false
contador_Texto(1.0); // retorna false
contador_Texto('1.0'); // retorna true
Beleza? Esclareci sua dúvida?
Abs.