La fonction Math.Exp()
est définie comme agissant sur les types de double précision. Notez que exp (-1000) == 5.08e-435, bien en dessous de la plus petite valeur absolue qui peut être exprimée en double.
Je pense qu'il est sûr de dire que tout environnement où les nombres à virgule flottante IEEE sont utilisés, exp(-1000)
sera 0.0. Il est très peu probable que .Net quittera jamais le point flottant IEEE. En termes plus généraux, je suppose que vous vous intéressez à la question de savoir si les petites quantités peuvent être arrondies à zéro. Bref, oui, à l'IEEE.
Cependant, il est probablement préférable de ne pas concevoir ce comportement dans votre code. Comme le suggère Darin, comparez les valeurs à virgule flottante dans une tolérance. Si vous avez une raison de travailler avec des nombres très petits ou grands, envisagez de suivre la quantité comme un logarithme et d'effectuer des opérations dans le domaine logarithmique (si vous avez besoin de multiplier, ajoutez les logarithmes, etc.). Vous pouvez utiliser une bibliothèque mathématique de haute précision, mais même avec des nombres qui deviennent très petits, le calcul peut être sujet à de grandes erreurs d'arrondi et à une faible stabilité numérique.
Enfin, si votre intention est de calculer 1.0 - Math.Exp(-num)
ou Math.Exp(-num) - 1
, recherchez une fonction de bibliothèque qui calcule directement ces derniers pour obtenir la meilleure précision.
Quelle est la raison du downvote? S'il vous plaît laissez un commentaire lors de la downvotation. –