Maison >développement back-end >C++ >Comment puis-je identifier de manière fiable les valeurs NaN en C ?

Comment puis-je identifier de manière fiable les valeurs NaN en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 17:36:09469parcourir

How Can I Reliably Identify NaN Values in C  ?

Identification des valeurs NaN en C

En C , la présence de valeurs NaN (Not-a-Number) peut survenir lors de l'exécution d'opérations à virgule flottante. La détection de ces valeurs spéciales est cruciale pour garantir l'exactitude du programme.

N'y a-t-il pas une fonction isnan() ?

Vous vous interrogez peut-être sur l'existence d'un isnan(). Dans MinGW, le fichier d'en-tête ne fournit pas de fonction isnan(). Au lieu de cela, vous devez inclure pour accéder à cette fonctionnalité.

Une propriété unique des NaNs

La norme à virgule flottante IEEE spécifie une propriété intrigante pour Valeurs NaN : toute comparaison impliquant un NaN sera toujours évaluée comme fausse. Cela signifie que si vous comparez une variable à virgule flottante

f avec elle-même (f != f) et que le résultat est vrai, cela indique sans équivoque que f est NaN.

Considérations sur le compilateur

Bien que cette astuce devrait théoriquement fonctionner pour les compilateurs qui adhèrent à Normes à virgule flottante IEEE, il est important de vérifier son efficacité avec votre compilateur spécifique. Certains compilateurs peuvent optimiser le code d'une manière qui compromet cette approche.

Dans les cas où la fiabilité est primordiale, il est recommandé de consulter la documentation de votre compilateur ou d'effectuer des tests empiriques pour confirmer le comportement des comparaisons NaN.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn