Vérification de la norme à virgule flottante IEEE 754 en C
Déterminer si un compilateur C adhère à la norme à virgule flottante IEEE 754 se fait généralement via une définition du compilateur. Cependant, la technique utilisée pour C peut ne pas s'appliquer directement à C.
C -Approche spécifique
Heureusement, C propose une méthode simple pour effectuer cette vérification en utilisant les limites numériques class :
<code class="cpp">std::numeric_limits<double>::is_iec559;</code>
Cette expression est évaluée comme vraie si IEEE 754 est utilisé par le compilateur et fausse dans le cas contraire. Une vérification similaire peut être effectuée pour le type float :
<code class="cpp">std::numeric_limits<float>::is_iec559;</code>
Méthode alternative
Comme alternative à l'approche numeric_limits, vous pouvez adapter la deuxième partie d'Adam réponse pour C :
<code class="cpp">#include <limits> int main() { // Check for IEEE 754 compliance by checking for a finite number of float exponents. if (std::numeric_limits<float>::max_exponent == std::numeric_limits<int>::max()) { // Compiler uses IEEE 754. } else { // Compiler does not use IEEE 754. } }</code>
Cette approche repose sur le fait que l'IEEE 754 définit une plage spécifique d'exposants pour les nombres à virgule flottante. Si l'exposant maximum du compilateur correspond à la taille maximale d'un entier, il adhère probablement à la norme IEEE 754.
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!