Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

lugh

Questão sobre o número de dígitos duma variável do tipo int

Mensagens Recomendadas

pmg    102
pmg

Hmmm ... não directamente.

Mas podes imprimir a variável para um string e calcular o tamanho da string.

int num_digitos(int variavel) {
  char buf[100];
  int len;

  sprintf(buf, "%d", variavel);
  len = strlen(buf);
  if (variavel < 0) len--;
  return len;
}

Não testado

Edit: nova versão, sem strlen()

int num_digitos(int variavel) {
  char buf[100];
  int len;

  len = sprintf(buf, "%d", variavel);
  if (variavel < 0) len--;
  return len;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

O número de dígitos é um valor fixo, dependente do tamanho do int na plataforma, se souberes o tamanho do int sabes logo quantos dígitos pode ter.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    309
Rui Carlos

Podes usar a fórmula floor(log10(abs(x)))+1, para saberes quantos dígitos tem o valor x, que funcionará para qualquer x diferente de 0.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

O número de dígitos é um valor fixo, dependente do tamanho do int na plataforma, se souberes o tamanho do int sabes logo quantos dígitos pode ter.

Só para indicar que isto foi a resposta parva de quem tinha acabado de acordar e não leu a pergunta como deve de ser....

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Podes usar a fórmula floor(log10(abs(x)))+1, para saberes quantos dígitos tem o valor x, que funcionará para qualquer x diferente de 0.

Supondo que x é um int ... "qualquer x diferente de 0" e diferente de INT_MIN (*) ;)

(*) isto para máquinas onde os int's são representados com 2's complement.

Nestas máquinas abs(INT_MIN) == INT_MIN /* == -2147483648 */

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lugh    0
lugh

Eu também pensei que era isso Knitter...

Se fosse necessário bastaria aplicar a fórmula ao valor power(256,sizeof(int))-1

O que pretendia era:

x = 12345678

x tem 8 dígitos

ou

y = 1234

y tem 4 digitas

:)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade