Jump to content

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


lugh

Recommended Posts

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;
}

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to post
Share on other sites

Também podes fazer sucessivas divisões por 10 e contar o número de iterações até chegar a 0.

Boa ideia, Ferreira ;)

http://paste.portugal-a-programar.org/pastebin.php?show=3040

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to post
Share on other sites

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....

Link to post
Share on other sites

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 */

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to post
Share on other sites

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

:)

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.