7
votes

Limites pour les types de points flottants?

   int i, min, max;

    for (i = 1.0; i > 0; ++i)
    {
        max = i;
    };
    min = i;
    printf ("int: min: %d max: %d \n", min, max);

7 commentaires

Vous trouverez des codes de formatage de printf valides dans en.wikipedia.org/wiki/printf#format_placeholferers


Je pense qu'il demande où trouver dbl_min et dbl_max . Une bonne question, en fait.


Même avec plusieurs modifications - thx Juliette & tout autre - Cet article n'est pas clair!


Juste pour vous faire savoir, je ne pense pas que vous devriez utiliser min et max . Renommez-les à IMIN et IMAX . C'est à cause de #define min (A, B) = A> B? B: un quelque part là-bas ... (Je ne sais pas où.)


@Ferz parce que nous ne pouvons pas comprendre cela bien. Avez-vous essayé d'utiliser Google Translate ? (Bien sûr, je n'ai pas encore indiqué , mais d'autres semblent avoir.)


@FERZ: Je viens de réécrire votre question à "où sont définies les limites des types de points flottants?" et supprimez tout le code d'exemple non pertinent et vous auriez fait. Bien que j'imagine qu'il y a déjà une question en double. J'ai changé le titre pour vous; Je suis réticent à changer le contenu puisque vous pouvez en fait demander quelque chose d'autre!


@Clifford Désolé mauvais anglais. Je suis d'écrire mieux essayer. Toutefois, dans les limites de fichier.h et float.h non variables dBL_MIN et DBL_MAX et FLT_MAX. Je suis une tâche du livre Kernighan, Brian W.; Dennis M. Ritchie Tâche 2.1


4 Réponses :


4
votes

Je pense que c'est ce que vous voulez:

flotteur:% f p>

flotteur long (double):% LF p>

Vous pouvez également vouloir le voir dans une notation exponentielle :% E p>

pour min / max pour flotter et double ici est ce que vous voulez P>

Voici un extrait de flotteur.h: p>

#define DBL_MAX 1.7976931348623158e+308 /* max value */
#define DBL_MIN 2.2250738585072014e-308 /* min positive value */

#define FLT_MAX 3.402823466e+38F /* max value */
#define FLT_MIN 1.175494351e-38F /* min positive value */


3 commentaires

Il cherche des constantes de mélange et max pour ces types


% f prend un Double argument. (Mais si un float est passé via ... , il est automatiquement favorisé à double .) % lf est incorrect. % LF peut être utilisé pour un Double Long argument.


Définir ces valeurs peut être une bonne solution dans des environnements intégrés où "flotteur.h" n'existe pas toujours



13
votes

sur Linux, j'ai flotté.h qui a flt_max et dbl_max défini pour un flot maximal et des valeurs doubles respectivement. Je ne sais pas comment "standard" qui est, bien que ...


2 commentaires

Si nous voulons faire confiance à Wikipedia , suffisamment standard. Soyez prudent, cependant: dbl_min ne fonctionne pas de la même manière que int_min .


Il est entièrement standard (dans l'ensemble de l'ANSI C89, ISO C90 et ISO C99)



16
votes

Les limites des types de points flottants sont définies dans float.h non limite. h


0 commentaires

-3
votes

Pour calculer les limites d'un type de données donné, vous devez calculer simplement (2 ^ (Tailleof (type) * 8)) - 1 , qui est (2 ^ numéros_of_of_bits ) - 1 .

Ensuite, si vous considérez que ce type doit être signé, les valeurs MIN et max sont -2 ^ (number_of_bits - 1) et (2 ^ (number_of_bits - 1)) - 1 ou s'ils sont non signés, min sera 0 et max (2 ^ numéry_of_bits) - 1 .

Ceci s'applique uniquement aux types d'entier, donc pas pour floattes et doubles, puis seulement pour les représentations entière complémentaire de deux.


4 commentaires

Cela ne fonctionnera pas pour des types de points flottants qui sont ce qu'il demande (bien que de manière quelque peu brouillée). Il a déjà les limites des types entier fournis par LIMITS.H


@Clifford: En fait, j'ai dit que cela ne fonctionnera que pour des entiers. J'ai manqué Limiths.h quand même. ;)


Vous avez effectivement dit cela, mon point était pourquoi? Cela ne répond pas à la question; fait simplement une chose simple compliquée. Vos formules ne sont même pas correctes, même si vous vous êtes souvenu de multiplier par Char_bit dans tous les cas.


@Clifford: Je n'ai pas remarqué qu'il incluait des limites.h