Je souhaite arrondir un nombre à virgule flottante pour définir la précision et renvoyer le résultat d'une fonction. Par exemple, j'ai actuellement la fonction suivante:C++ arrondi nombres flottants pour définir la précision
inline bool R3Point::
operator==(const R3Point& point) const
{
// Return whether point is equal
return ((v[0] == point.v[0]) && (v[1] == point.v[1]) && (v[2] == point.v[2]));
}
Ce que je veux faire est au lieu de faire une comparaison v[i] == point.v[i]
directe, je voudrais comparer que des chiffres à une certaine précision de jeu, de sorte que si v[i] = 0.33349999999999996
et point.v[i] = 0.33350000000000002
, ma comparaison égale se traduira par VRAI.
Je suis conscient qu'il existe une fonction C++ smanip setprecision (int n);
et j'ai vu beaucoup utilisé lors de l'affichage de sortie à l'écran en utilisant cout
. Cependant, je ne suis pas sûr si cela peut être utilisé dans la fonction comme je l'ai décrit.
Merci.
qu'est-ce que tu veux dire par changer la précision 1e-9 en conséquence? Dans mon cas, je ne suis pas sûr du signe donc j'utiliserais quelque chose if (fabs (v [0] -point.v [0]) <1e-9). – Myx
Je voulais dire, vous devez changer 1e-9 en fonction du nombre de chiffres dont vous avez besoin pour être précis. –