Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paivadaniel

condicional em intervalo em C

Recommended Posts

Pergunta simples: no código abaixo, por que quando digito 8 ou 12, ele não entra no if e printa "Bingo"?

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{

int a = 10;
int d;

  printf ("Digite o valor: \n");
  scanf ("%d", &d);

  if ((d>=0.8*a) && (d<=1.2*a))
     printf ("Bingo!\n");
  else
     printf ("Not Bingo!\n");

 system("pause");
 return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você usar casting p/ inteiro ele vai.

0.8 em binário: 0.11001100110011001100... (ad infinitum) Muito provável que tenha a ver com isso o comportamento estranho, pois a conta do lado direito da comparação termina sendo um ponto flutuante (nesses casos onde não há representação finita, o número que você obtém convertendo do binário p/ decimal não é igual ao decimal inicial).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.