Oui, en divisant par petits nombres peuvent provoquer les mêmes effets que la division par zéro, y compris les pièges, dans certaines situations.
Certaines implémentations C (et quelques autres environnements informatiques) peut exécuter dans une chasse d'eau-de type dépassement de mode, en particulier si les options de haute performance sont utilisés. Dans ce mode, en divisant par un des nombres dénormalisés peut provoquer le même résultat que la division par zéro. Flush-underflow mode n'est pas rare quand le vecteur (SIMD) instructions sont utilisées.
Nombres dénormalisés numéros sont ceux avec le moins d'exposant dans le floating point format qui sont si petits que l'implicite peu de la significande est 0 au lieu de 1. Pour la norme IEEE 754, simple précision, c'est non nulle numéros avec une amplitude de moins de 2-126. Pour la double précision, il est non-zéro numéros avec une amplitude de moins de 2-1022.
La manipulation des nombres dénormalisés correctement les numéros (en conformité avec la norme IEEE 754) nécessite plus de temps de calcul dans certains processeurs. Pour éviter ce délai lorsqu'il n'est pas nécessaire, les transformateurs peuvent avoir un mode de convertir des nombres dénormalisés opérandes à zéro. La division d'un nombre par un des nombres dénormalisés opérande produira le même résultat que la division par zéro, même si le résultat habituel serait finie.
Comme indiqué dans d'autres réponses, la division par zéro n'est pas une erreur en C des implémentations d'adopter l'Annexe F de la norme. Pas toutes les implémentations qui ne. Dans les implémentations qui ne le font pas, vous ne pouvez pas être sûr de savoir si à virgule flottante pièges sont activés, en particulier le piège de la division par zéro exception, sans autres spécifications relatives à votre environnement.
Selon votre situation, vous pourriez également avoir à se prémunir contre un autre code dans votre application modifiant la virgule flottante de l'environnement.