HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la bibliothèque pour signaler normalement des cas de débordement.
Si tu cherches une constante qui exprime une grande valeur finie, il vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
En fait, dans un code, je voudrais changer un #define MIN_VALUE -10000 par #define MIN_VALUE -HUGE_VAL
Euh, tu passes d'un type entier à un type flottant... Je pense que tu vas avoir des problèmes de concordance de types à court terme ;-)
Sinon je penses que tu peux essayer #define MIN_VALUE INT_MIN
Antoine
Arnaud Giersch
Vendredi 27 avril 2012, vers 17:28:11 (+0200), Antoine Leca a écrit:
Arnaud Giersch écrivit :
Une question à propos de HUGE_VAL (math.h).
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la bibliothèque pour signaler normalement des cas de débordement.
C'est bien ce que j'ai cru comprendre.
Si tu cherches une constante qui exprime une grande valeur finie, il vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où ma question.
#define MIN_VALUE -10000 par #define MIN_VALUE -HUGE_VAL
Euh, tu passes d'un type entier à un type flottant... Je pense que tu vas avoir des problèmes de concordance de types à court terme ;-)
J'ai copié l'existant tel quel, mais ça devrait effectivement être -10000.0. MIN_VALUE est en fait toujours comparé à un double, j'avais oublié de le préciser.
Arnaud
Vendredi 27 avril 2012, vers 17:28:11 (+0200), Antoine Leca a écrit:
Arnaud Giersch écrivit :
Une question à propos de HUGE_VAL (math.h).
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la
bibliothèque pour signaler normalement des cas de débordement.
C'est bien ce que j'ai cru comprendre.
Si tu cherches une constante qui exprime une grande valeur finie, il
vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où
ma question.
#define MIN_VALUE -10000
par
#define MIN_VALUE -HUGE_VAL
Euh, tu passes d'un type entier à un type flottant... Je pense que tu
vas avoir des problèmes de concordance de types à court terme ;-)
J'ai copié l'existant tel quel, mais ça devrait effectivement être
-10000.0. MIN_VALUE est en fait toujours comparé à un double, j'avais
oublié de le préciser.
Vendredi 27 avril 2012, vers 17:28:11 (+0200), Antoine Leca a écrit:
Arnaud Giersch écrivit :
Une question à propos de HUGE_VAL (math.h).
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la bibliothèque pour signaler normalement des cas de débordement.
C'est bien ce que j'ai cru comprendre.
Si tu cherches une constante qui exprime une grande valeur finie, il vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où ma question.
#define MIN_VALUE -10000 par #define MIN_VALUE -HUGE_VAL
Euh, tu passes d'un type entier à un type flottant... Je pense que tu vas avoir des problèmes de concordance de types à court terme ;-)
J'ai copié l'existant tel quel, mais ça devrait effectivement être -10000.0. MIN_VALUE est en fait toujours comparé à un double, j'avais oublié de le préciser.
Arnaud
espie
In article , Arnaud Giersch wrote:
Vendredi 27 avril 2012, vers 17:28:11 (+0200), Antoine Leca a écrit:
Arnaud Giersch écrivit :
Une question à propos de HUGE_VAL (math.h).
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la bibliothèque pour signaler normalement des cas de débordement.
C'est bien ce que j'ai cru comprendre.
Si tu cherches une constante qui exprime une grande valeur finie, il vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où ma question.
un INFINITY utilisable n'est meme pas C99.
Il faut C99 + IEEE754, et il existe quelques plateformes (rares, par exemple du vax) ou IEEE754 ne fait pas de sens / coute trop cher.
C99 reclame pour INFINITY: - soit une vraie valeur infinie - soit un float qui va deborder, ce qui reclame un diagnostic et pose quelques petits problemes avec d'autres bouts de la norme.
Le truc "previsible", c'est NAN, qui lui est carrement non defini s'il n'y a pas sur la plateforme...
De l'interet de rester dans des valeurs normalisees, DBL_MAX, FLT_MAX et consorts...
In article <87ty05w21m.fsf@groumpf.homeip.net>,
Arnaud Giersch <arnaud.giersch@free.fr> wrote:
Vendredi 27 avril 2012, vers 17:28:11 (+0200), Antoine Leca a écrit:
Arnaud Giersch écrivit :
Une question à propos de HUGE_VAL (math.h).
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la
bibliothèque pour signaler normalement des cas de débordement.
C'est bien ce que j'ai cru comprendre.
Si tu cherches une constante qui exprime une grande valeur finie, il
vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où
ma question.
un INFINITY utilisable n'est meme pas C99.
Il faut C99 + IEEE754, et il existe quelques plateformes (rares, par exemple
du vax) ou IEEE754 ne fait pas de sens / coute trop cher.
C99 reclame pour INFINITY:
- soit une vraie valeur infinie
- soit un float qui va deborder, ce qui reclame un diagnostic et pose
quelques petits problemes avec d'autres bouts de la norme.
Le truc "previsible", c'est NAN, qui lui est carrement non defini s'il
n'y a pas sur la plateforme...
De l'interet de rester dans des valeurs normalisees, DBL_MAX, FLT_MAX
et consorts...
Vendredi 27 avril 2012, vers 17:28:11 (+0200), Antoine Leca a écrit:
Arnaud Giersch écrivit :
Une question à propos de HUGE_VAL (math.h).
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la bibliothèque pour signaler normalement des cas de débordement.
C'est bien ce que j'ai cru comprendre.
Si tu cherches une constante qui exprime une grande valeur finie, il vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où ma question.
un INFINITY utilisable n'est meme pas C99.
Il faut C99 + IEEE754, et il existe quelques plateformes (rares, par exemple du vax) ou IEEE754 ne fait pas de sens / coute trop cher.
C99 reclame pour INFINITY: - soit une vraie valeur infinie - soit un float qui va deborder, ce qui reclame un diagnostic et pose quelques petits problemes avec d'autres bouts de la norme.
Le truc "previsible", c'est NAN, qui lui est carrement non defini s'il n'y a pas sur la plateforme...
De l'interet de rester dans des valeurs normalisees, DBL_MAX, FLT_MAX et consorts...
Arnaud Giersch
Vendredi 27 avril 2012, vers 19:50:13 (+0200), Marc Espie a écrit:
un INFINITY utilisable n'est meme pas C99.
Il faut C99 + IEEE754, et il existe quelques plateformes (rares, par exemple du vax) ou IEEE754 ne fait pas de sens / coute trop cher.
[...]
Merci pour ces précisions.
Arnaud
Vendredi 27 avril 2012, vers 19:50:13 (+0200), Marc Espie a écrit:
un INFINITY utilisable n'est meme pas C99.
Il faut C99 + IEEE754, et il existe quelques plateformes (rares, par exemple
du vax) ou IEEE754 ne fait pas de sens / coute trop cher.