96 votes

Quand est-ce que j'utilise les fabs et quand est-il suffisant d'utiliser std :: abs?

Je suppose que les abdominaux et les artificiels se comportent différemment lors de l’utilisation de math.h. Mais lorsque j'utilise uniquement cmath et std :: abs, dois-je utiliser std :: fabs? ou des fabs? Ou n'est-ce pas défini?

121voto

Mike Seymour Points 130519

En C ++, il est toujours suffisant d'utiliser std::abs ; il est surchargé pour tous les types numériques.

En C, abs ne fonctionne que sur les entiers et vous avez besoin de fabs pour les valeurs à virgule flottante. Celles-ci sont disponibles en C ++ (avec toute la bibliothèque C), mais il n'est pas nécessaire de les utiliser.

22voto

Lex Points 3204

C'est toujours bon à utiliser fabs pour double et float arguments. Je préfère cela, car il garantit que si j'ai accidentellement bande de l' std:: off l' abs, que le comportement reste le même pour la virgule flottante entrées.

Je viens de passer 10 minutes de débogage ce problème, en raison de ma propre erreur d'utiliser des abs au lieu de std::abs. Je suppose que l' using namespace std;permettrait de déduire std::abs , mais il n'a pas, et a plutôt été à l'aide de la version C.

De toute façon, je crois qu'il est bon d'utiliser fabs au lieu de abs pour virgule flottante entrées comme un moyen de documenter votre intention clairement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X