La modélisation de l'infini pour le plus grand double de la valeur
La question est à propos de la modélisation de l'infini en C++ pour la double
type de données. J'en ai besoin dans un fichier d'en-tête, de sorte que nous ne pouvons pas utiliser des fonctions comme numeric_limits
.
Est-il défini une constante qui représente la plus grande valeur?
OriginalL'auteur ashim | 2011-12-27
Vous devez vous connecter pour publier un commentaire.
des nombres à virgule flottante(comme les doubles) peut contenir positifs et négatifs de l'infini. La constante de l'INFINI doit être dans votre en mathématiques.h-tête.
Est allé standard de plongée et trouvé le texte:
Dans La Section
7.12 Mathematics <math.h>
Alors bien sûr, vous avez la fonction d'assistance
isinf
pour tester l'infini(qui est aussi en mathématiques.h).Puisque la question est techniquement demandant ce que pour "C++" #include <cmath> header () doit être utilisé à la place de #include <math.h>.
OriginalL'auteur Lalaland
numeric_limits
fonctions sont toutes constexpr de sorte qu'ils fonctionnent très bien compiler des constantes de temps (en supposant que vous êtes à l'aide de la version actuelle de C++). Doncstd::numeric_limits<double>::infinity()
devraient travailler dans n'importe quel contexte.Même si vous utilisez une version plus ancienne, ce sera encore du travail à un endroit où vous n'avez pas besoin d'un moment de la compilation constante. Il n'est pas clair à partir de votre question, si votre utilisation vraiment besoin d'un moment de la compilation constante ou non; juste être dans un en-tête n'a pas nécessairement besoin d'elle.
Si vous utilisez une version plus ancienne, et vous avez vraiment besoin d'un moment de la compilation constante, la macro
INFINITY
dans cmath doit travailler pour vous. C'est en fait lafloat
de la valeur pour l'infini, mais il peut être converti endouble
.OriginalL'auteur bames53
Ne savez pas pourquoi vous ne pouvez pas utiliser std::numeric_limits dans un fichier d'en-tête. Mais il y a aussi ce reportés de la norme ANSI C:
OriginalL'auteur Gerald
Peut-être dans votre environnement C++ vous avez
float.h
, voir http://www.gamedev.net/topic/392211-max-value-for-double-/ (DBL_MAX)OriginalL'auteur Joop Eggen
Je pensais que la réponse était "42.0" 😉
Cet article pourrait vous intéresser:
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
Ou ceci:
http://www.cplusplus.com/reference/clibrary/cfloat/
MAXimum finis représentable nombre à virgule flottante:
OriginalL'auteur paulsm4
De Wikipedia:
y at-il?
Je ne connais pas les plateformes actuelles. Mais mon vieux 8 bits Atari système n'a pas (et oui, il avait à virgule flottante). Mais c'est une mauvaise forme, peu importe. Il n'y a pas en disant qu'en virgule flottante IEEE de la façon dont les choses sont faites en dix ans. Cela invite à la création d'un autre "millenium bug'.
OriginalL'auteur fge
DBL_MAX peut être utilisé. Ce n'est trouvé dans flotter.h comme suit
OriginalL'auteur Ajit Vaze
Vous pouvez trouver
INFINITY
défini dans<cmath>
(math.h
):OriginalL'auteur AusCBloke
Ne serait pas ce travail?
OriginalL'auteur Pubby