IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

constante min/max d'un float


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut constante min/max d'un float
    Bonjour,

    J'aimerais savoir si il existe une constante minimum et une constante maximum que peut supporter un float. Ce qui peut être pratique pour faire un algo de recherche du min et max d'un ensemble de valeur !

    Merci d'avance...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par zenux Voir le message
    J'aimerais savoir si il existe une constante minimum et une constante maximum que peut supporter un float. Ce qui peut être pratique pour faire un algo de recherche du min et max d'un ensemble de valeur !
    Flottants IEEE :
    • valeur max = +inf
    • valeur min = -inf

    Il n'y a pas de constantes dans <limits.h> pour cela, mais ces valeurs s'obtiennent par float(1./0.) et float(-1./0.) respectivement.

    Attention, les NaN ne sont pas ordonnés! Tu ne peux pas trier des flottants IEEE en les comparant simplement avec < si il peut y avoir des NaN dans le lot : une comparaison avec un NaN renvoie toujours faux.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci pour ta réponse mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
    	const float MAX_FLOAT = 1./0.;
     
    	return 0;
    }
    ==>
    main.cpp: In function `int main()':
    main.cpp:3: warning: division by zero in `1.0e+0 / 0.'

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    FLT_MAX et FLT_MIN dans <float.h>
    std::numeric_limits<float>::max() et std::numeric_limits<float>::min() dans <limits>

    Attention : le min renvoie le plus petit dans le sens "plus proche de zéro". Le plus petit sera en fait -FLT_MAX.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par zenux Voir le message
    Merci pour ta réponse mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
    	const float MAX_FLOAT = 1./0.;
     
    	return 0;
    }
    ==> warning
    Donc le programme compile.

    Si tu ajoutes un cout (pour s'assurer que le calcul n'est pas supprimé à l'optimisation), il se passe quoi?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    FLT_MAX et FLT_MIN dans <float.h>
    std::numeric_limits<float>::max() et std::numeric_limits<float>::min() dans <limits>

    Attention : le min renvoie le plus petit dans le sens "plus proche de zéro". Le plus petit sera en fait -FLT_MAX.
    Encore faudrait-il préciser ce que renvoient ces fonctions min() et max().

    std::numeric_limits<float>::max() = FLT_MAX et n'est pas +inf sur les machines IEEE qui peuvent représenter +inf.

    std::numeric_limits<float>::min() n'est ni la plus petite valeur d'un float, ni la plus petite valeur finie, ni la plus petite valeur strictement positive, mais la plus petite valeur strictement positive normalisée.

Discussions similaires

  1. Algorithme Min-Max appliqué au jeu Puissance 4 en C .
    Par hebmaster dans le forum Intelligence artificielle
    Réponses: 17
    Dernier message: 29/10/2012, 07h33
  2. MIN MAX sur une constante
    Par olibara dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/06/2009, 10h38
  3. Fonction d'évaluation d'un jeu de dames utilisant l'algorithme du min/max
    Par elron8 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 31/01/2007, 11h04
  4. [C++.NET] Valeurs min/max dans une TextBox
    Par raboin dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 06/04/2006, 17h15
  5. Emuler un min/max-width ou un min/max-height
    Par Perceval dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/09/2005, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo