Partage
  • Partager sur Facebook
  • Partager sur Twitter

Valeurs min et max des float et des double

    19 septembre 2018 à 19:09:33

    Bonjour,

    je voudrais comprendre comment on calcule les valeurs maximales et minimales des types float et double.

    Pour les types char, int et long, on effectue 2^(nombre de bits) mais ça ne marche pas pour les types float et double.

    Merci pour vos réponse.

    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2018 à 20:24:49

      Bonjour

      Je pense qu'on ne peut calculer soi-même de manière fiable que les limites des types non signés. Le type char est spécialement problématique.

      Pour tous les types entiers, l'entête <limits.h> contient des macros comme CHAR_MIN, CHAR_MAX, INT_MAX. Pour les types flottants, voir <float.h> (avec DBL_MAX, DBL_EPSILON, DBL_MIN, etc.)

      -
      Edité par Marc Mongenet 20 septembre 2018 à 10:09:02

      • Partager sur Facebook
      • Partager sur Twitter
        20 septembre 2018 à 9:25:30

        Pour le type char, on fait 2^8=256 donc pour les unsigned les valeurs limites sont 0 et 255, pour les signed, c'est -127 à 128.
        • Partager sur Facebook
        • Partager sur Twitter
          20 septembre 2018 à 10:10:28

          Le type char contient CHAR_BIT bits, qui est supérieur ou égal à 8.
          Le type signed char est signé, unsigned char est non signé, et char est signé ou pas, ça dépend.
          Bref, on peut tester sur son PC à la maison et discuter avec un ami, puis penser que ce qu'on a trouvé est universel; mais en fait c'est plus compliqué.

          -
          Edité par Marc Mongenet 20 septembre 2018 à 10:12:40

          • Partager sur Facebook
          • Partager sur Twitter
            20 septembre 2018 à 10:25:30

            Salut !

            En effet, la norme dit que le char fait au moins 8 bits, donc pourrait avoir davantage.

            Mais je me demande.

            As tu des exemples de compilos ou le char fait effectivement plus de 8 bits, et n'est pas signed par défaut ? 

            • Partager sur Facebook
            • Partager sur Twitter

            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

              20 septembre 2018 à 12:36:30

              Fvirtman a écrit:

              Salut !

              En effet, la norme dit que le char fait au moins 8 bits, donc pourrait avoir davantage.

              Mais je me demande.

              As tu des exemples de compilos ou le char fait effectivement plus de 8 bits, et n'est pas signed par défaut ? 

              Concernant le signe, j'ai trouvé cette intéressante table à https://trofi.github.io/posts/203-signed-char-or-unsigned-char.html:

              architecture 	signedness 	preferred signedness 	match
              alpha 	SIGNED 	UNSIGNED 	NO
              arm 	UNSIGNED 	AMBIVALENT 	YES
              hppa 	SIGNED 	UNSIGNED 	NO
              ia64 	SIGNED 	UNSIGNED 	NO
              m68k 	SIGNED 	AMBIVALENT 	YES
              mips 	SIGNED 	AMBIVALENT 	YES
              powerpc 	UNSIGNED 	UNSIGNED 	YES
              s390(64) 	UNSIGNED 	UNSIGNED 	YES
              sh 	SIGNED 	SIGNED 	YES
              sparc 	SIGNED 	AMBIVALENT 	YES
              x86 	SIGNED 	AMBIVALENT 	YES


              Avec ARM d'un coté et x86 de l'autre, le monde est bien partagé. Personnellement, j'ai toujours codé sur des machines avec char signé cela dit.

              Pour ce qui est d'avoir un char de plus de 8 bits, on trouve des exemples sur le Web, mais je n'ai aucune expérience avec.

              Quant à être plus de 8 bits et non signé, je ne sais pas si ça existe.

              • Partager sur Facebook
              • Partager sur Twitter

              Valeurs min et max des float et des double

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown