Définissez les chiffres après le point décimal
J'ai un nombre à virgule par exemple 12.12123
Est-il une fonction qui affiche uniquement le numéro à 2 chiffres après le point décimal
12.12 ?
Voici le code:
y1 = ( c1 - (a1 * x)) / b1;
y2 = ( c2 - a2 * x) / b2;
if (y1 == y2)
cout << "The same";
donc, si y1 = 1.001 et y2 = 1.002 ils n'apparaissent pas comme le même.
J'ai essayé d'ajouter.
cout.setf(ios::fixe, ios::floatfield);
cout.précision(2);
mais il ne semble pas aider.
Êtes-vous vraiment demander "comment comparer deux flotteurs de sorte qu'ils sont les mêmes à 2 décimales?"
OriginalL'auteur user474401 | 2010-10-13
Vous devez vous connecter pour publier un commentaire.
En C, le 0 de rembourrage est automatiquement ajouté à la droite si il n'y a pas assez de chiffres à imprimer.
En C++ exemples, au lieu de cela, c'est désactivée; pour activer cette fonctionnalité, vous devez activer le mode fixe sur le flux avecstd::fixed
(ou l'activation du flux pertinent de drapeaux avecstd::ios_base::setf()
).Modifier: je me suis souvenu de mal; si
fixed
n'est pas définie, laprecision
paramètre dit dans le flux de la total nombre de chiffres à afficher, y compris ceux d'avant le point décimal. Donc, dans ce cas, je pense que le seul moyen est d'utiliser lefixed
mode (exemples fixe), ce qui donnera le même comportement deprintf
.Liens:
OriginalL'auteur Matteo Italia
Vous êtes à la recherche pour
printf("%.2f", 12.12123);
ou:EDIT: Question changé, donc la réponse.
Vous ne voulez pas utiliser directement l'égalité avec virgule flottante, vous comparez toujours dans epsilon tolérance. Votre
epsilon
est juste assez grand.Remplacer
if (y1 == y2)
avecif (abs(y1 - y2) < 0.01)
.y1 = ( c1 (a1 * x)) / b1; cout << fixe << setprecision(2) << y1;
Vous pouvez faire
y1 = floor(y1 * 100 + 0.5) / 100;
mais il serait inutile: virgule flottante de précision ne peut pas représenter tous les nombres décimaux, en fait, votre exemple12.12
est approchée comme12.119999999999999
sur ma plate-forme.OriginalL'auteur Frédéric Hamidi
Ce serait d'imprimer 1.46
Ouais.. une faute d'inattention
Il est étiqueté comme C++, donc il a certainement signifiait à l'aide de la
iostream
de la bibliothèque.Il a été précédemment marqués C, changé plus tard en C++ lors de l'incohérence b/w et la balise de titre a été souligné par MSalters.
OriginalL'auteur kaustubh
OriginalL'auteur dutt
OriginalL'auteur Armen Tsirunyan
Vous vous demandez probablement pas la question. Essayez suivantes:
OriginalL'auteur kaustubh
OriginalL'auteur Ruel