web-dev-qa-db-fra.com

Réglez les chiffres après le point décimal

J'ai un nombre flottant par exemple 12.12123 Existe-t-il une fonction qui afficherait uniquement un nombre à 2 chiffres après la virgule 12.12?

Voici le code:

y1 = ( c1 - (a1 * x)) / b1;
 y2 = ( c2 - a2 * x) / b2;

if (y1 == y2)
  cout << "The same";

donc si le y1 = 1,001 et le y2 = 1,002 ils n'apparaissent pas comme les mêmes.

J'ai essayé d'ajouter. cout.setf (ios :: fixed, ios :: floatfield); cout.precision (2);

mais cela ne semble pas aider.

16
user474401

Vous recherchez printf("%.2f", 12.12123); ou:

#include <iostream>
#include <iomanip>

using namespace std;
cout << fixed << setprecision(2) << 12.12123;

EDIT: La question a changé, la réponse aussi.

Vous ne voulez jamais utiliser l'égalité directe avec virgule flottante, vous comparez toujours dans la tolérance epsilon . Votre epsilon est tout simplement assez grand.

Remplacez if (y1 == y2) par if (abs(y1 - y2) < 0.01).

7
Frédéric Hamidi
double num = 1.4567;
printf("%.2f",num);

Cela imprimerait 1,46

2
patentfox
cout.precision(2);
cout <<f;
2
dutt
#include <iostream>
#include <iomanip>

int main ()
{
   double d = 1.242354345; 
   using namespace std;
   cout << setiosflags(ios::fixed | ios::showpoint)
        << setprecision(2)
        << d; 
}
2
Armen Tsirunyan

Vous posez probablement une mauvaise question. Essayez de suivre:

double diff = fabs(y1-y2);
if(diff < 0.005)
    cout << "Almost same";
2
patentfox
cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);
float al = 42.645; //sample
cout << al;
1
Ruel