Avatar ·

La fonction standard sign (signum, sgn) en C++ : existe-t-elle et comment l'implémenter ?

Bonjour, collègues ! J'écris un petit programme en C++ pour l'analyse numérique, et j'ai besoin d'une fonction qui retourne le signe d'un nombre : -1 pour les négatifs, 0 pour zéro et 1 pour les positifs. En mathématiques, cela s'appelle signum ou sgn. J'ai fouillé la documentation de et , mais je n'ai rien trouvé de similaire. En Python, il y a numpy.sign(), en MATLAB il y a sign(), et en C++ — silence. Est-ce vraiment possible que la bibliothèque standard C++ n'ait pas une chose aussi élémentaire ? Voici un exemple de ce que je veux faire : ```cpp #include #include // peut-être ici ? int main() { double x = -5.7; // J'aimerais écrire quelque chose comme : // int s = sign(x); // Mais le compilateur se plaint que sign n'est pas déclaré. // Je dois écrire des bricolages : int s; if (x > 0) s = 1; else if (x < 0) s = -1; else s = 0; std::cout << "sign(" << x << ") = " << s << std::endl; return 0; } ``` Cela fonctionne, mais ça a l'air horrible. Pour les entiers, je peux utiliser une astuce