comparison of floats

10

This program allows you to check which of the three floats is the largest, but you are ignoring the decimal places.

For example if I put the values 1.4 , 1.6 and 1.5 , the program tells me that the largest is the 1.4 value. How do I solve the problem ??

void main()
{ 
  setlocale(LC_ALL, "portuguese"); 
  double numero1,numero2,numero3; 
  printf(" introduza o 1º numero, 2º numero e 3º numero!\n"); 
  scanf("%f %f %f", &numero1, &numero2, &numero3); 
  if (numero1 > numero2 && numero1 > numero3) 
  printf(" O 1º número introduzido é o maior!\n");
  else if (numero2 > numero1 && numero2 > numero3) 
  printf(" O 2º número é o mairo!\n"); 
  else printf(" O 3º numero é o maior!\n"); 
}
    
asked by anonymous 12.08.2015 / 13:14

1 answer

10
  double numero1, numero2, numero3;
  scanf("%f %f %f", &numero1, &numero2, &numero3);

Error: Specifying "%f" of scanf() expects a pointer to a variable of type float , but you are passing a pointer to variable of type double .

Or change the type of variables (not advise, always use double ) or change the specification in scanf() and check if everything went well

  if (scanf("%lf%lf%lf", &numero1, &numero2, &numero3) != 3) /* erro */;
    
12.08.2015 / 13:40