Equation second degré

Bonjour,
j'ai une question, lorsque j'ecris mon programme qui résoud une equation en second degré avec des "float" ça nmarche po "lequation n'admet pas de solution" par contre quand jutilise des "doubles" ça marche, SVP pouvez vs me dire pourquoi???

1 réponse

  1. Modérateur
    Il faudrait voir ton code !
    1. voilà le programme:
      #include<iostream.h>
      #include<stdlib.h>
      #include<math.h>
      main()
      {
      float a,b,c,delta,x,x1,x2;
      cout<<"donnez a,b,c tq ax2+bx+c=0\n";
      cin>>a;
      cin>>b;
      cin>>c;
      if(a==0)
      {
      if(b==0)
      {
      if(c==0)
      cout<<"infinité de solutions";
      else
      cout<<"pas de solution";
      }
      else
      cout<<"x="<<-c/b;
      }
      else
      {
      delta=b*b-4*a*c;
      if(delta>0)
      {
      x1=(-b-sqrt(delta))/(2*a);
      x2=(-b+sqrt(delta))/(2*a);
      cout<<"x1="<<x1<<"\n";
      cout<<"x2="<<x2;
      }
      else
      if(delta==0)
      {
      x=-b/(2*a);
      cout<<"x="<<x;
      }
      else
      cout<<"pas de solution";
      }
      system("pause");
      }
      jutilise un compilateur (dev c++)
    2. Modérateur
      Je ne vois pas d'erreur dans le programme, quelles valeurs as-tu testé pour avoir ce comportement ?
    3. g tésté pour a=0.3, b=2.1, c=3.675 ça ne marche po :(
    4. Modérateur
      Ici tu as donc théoriquement delta=0, mais le problème avec les valeurs flottantes c'est qu'il y a toujours des arrondis... Affiche delta pour voir, j'imagine que tu as plutôt quelque chose comme -0.000000001 et du coup tu rentres dans le cas de figure delta négatif, même si ce n'est pas vrai.
    5. j'ai po bien compris, ça veut dire qu'en utilisant des float on n'utilise que des nbres positifs; alors qu'avc les doubles on peut utiliser des nombre signés