logo

C Flotteur et Double

Flotter et double sont deux types de données primitifs en programmation C qui sont utilisés pour stocker valeurs décimales . Ils stockent tous deux des nombres à virgule flottante, mais diffèrent par le niveau de précision avec lequel ils peuvent stocker les valeurs.

Dans cet article, nous étudierons chacun d’eux en détail, leur représentation mnésique et la différence entre eux.



Flotter

Float est utilisé pour stocker des nombres à virgule flottante simple précision. Il peut stocker des valeurs décimales avec une précision allant jusqu'à 6 à 7 décimales.

Syntaxe

 float var_name ;>
  • La taille du flotteur est 4 octets.
  • Float peut stocker des valeurs variant de 3,4 x 10-38à 3,4x dix38.
  • Il peut stocker des valeurs jusqu'à 7 décimales sans perte de précision.
  • Le spécificateur de format pour float est %F.

Exemple

C




modem contre routeur





// C Program to illustrate float> #include> > int> main()> {> >// Syntax of declaring and initializing> >// the float variable> >float> myVariable = 789.123456f;> > >// printing floating point number> >printf>(>'Float value is %f'>, myVariable);> >return> 0;> }>

>

>

ajouter la gestion des exceptions Java
Sortir

Float value is 789.123474>

Comme vous pouvez le voir dans le résultat ci-dessus, la précision des nombres décimaux est perdue après le 7ème chiffre en raison du nombre limité de bits dans float. Dans ces cas, un double type de données est recommandé.

Note: Tous les littéraux de nombres réels sont de type double par défaut. Nous pouvons ajouter un F à la fin du littéral pour le définir comme type float.

Double

Double est utilisé pour stocker des valeurs à virgule flottante double précision. Il s'agit de la version supérieure de float qui peut stocker des nombres réels avec une précision jusqu'à 15 décimales.

  • La taille du double est 8 octets.
  • La portée du double est 1,7 × 10-308à 1,7×10+308.
  • Il peut stocker des valeurs jusqu'à 15 points décimaux sans perte de précision.
  • Le spécificateur de format pour double est %lf

Exemple

C


comment supprimer le premier caractère dans Excel



#include> > int> main()> {> >// Syntax of declaring and initializing> >// the double variable> >double> myVariable = 789.123456;> >printf>(>'Double value is %lf'>, myVariable);> >//%lf or %f both can be used to> >// print Float values> >return> 0;> }>

chiffres pour l'alphabet

>

>

Sortir

Double value is 789.123456>

Comment le float et le double sont-ils stockés ?

Le langage C suit le Norme IEEE 754 pour représenter les valeurs à virgule flottante dans la mémoire. Contrairement au type int qui est directement stocké en mémoire sous forme binaire, les valeurs float sont divisées en deux parties : exposant et mantisse, puis stockées.

Selon IEEE 754, les valeurs à virgule flottante se composent de 3 éléments :

    Bit de signe : cela représente le signe du nombre. 0 représente positif tandis que 1 représente négatif. Exposant biaisé : L'exposant du nombre ne peut pas être directement stocké car il peut être à la fois négatif ou positif, nous utilisons donc un exposant biaisé auquel nous ajoutons un certain biais à l'exposant. Mantisse normalisée : Matissa est le nombre en notation scientifique, c'est-à-dire les bits de précision du nombre.

Représentation de la mémoire flottante C

La taille du float est de 32 bits, dont :

arbre binaire vs bst
    Le bit de poids fort (MSB) est utilisé pour stocker le signe du numéro.
  • Le suivant 8 bits sont utilisés pour stocker les exposant.
  • Le reste 23 bits sont utilisés pour stocker les mantisse.
représentation mémoire de float

Exemple

Prenons 65,125 comme nombre décimal que nous souhaitons stocker en mémoire.

Converting to Binary form, we get: 65 = 1000001 0.125 = 001 So, 65.125 = 1000001.001 = 1.000001001 x 106 Normalized Mantissa = 000001001 Now, according to the standard, we will get the baised exponent by adding the exponent to 127, = 127 + 6 = 133 Baised exponent = 10000101 And the signed bit is 0 (positive) So, the IEEE 754 representation of 65.125 is, 0 10000101 00000100100000000000000>

Représentation de la double mémoire C

La taille du float est de 32 bits, dont :

    Le bit de poids fort (MSB) est utilisé pour stocker le signe du numéro.
  • Le suivant 11 bits sont utilisés pour stocker les exposant.
  • Le reste 52 bits sont utilisés pour stocker les mantisse.
représentation en mémoire du double

Exemple

Prenons l'exemple du même nombre 65.125,

From above, 65.5 = 1.000001001 x 106 Normalized Mantissa = 000001001 Now, according to the standard, bais is 1023. So, = 1023 + 6 = 1029 Baised exponent = 10000000101 And the signed bit is 0 (positive) So, the IEEE 754 representation of 65.125 is, 0 10000000101 0000010010000000000000000000000000000000000000000000>

Différences entre float et double

Points

Flotter

Double

Précision Float est une virgule flottante IEEE 754 simple précision qui offre une précision jusqu'à 7 décimales. Double est une virgule flottante IEEE 754 double précision qui offre une précision jusqu'à 15 décimales.
Utilisation de la mémoire Float utilise 32 bits ou 4 octets de mémoire. Double utilise 64 bits ou 8 octets de mémoire.
Gamme Float peut stocker des valeurs variant de 3,4 x 10-38à 3,4 x 10+38. La plage du double est de 1,7 × 10-308à 1,7×10+308.
Spécificateur de format %F est le spécificateur de format pour float. %lf est le spécificateur de format pour double.
Représentation de la mémoire Signe = 1 bit
Exposant = 8 bits
Mantisse = 23 bits
Signe = 1 bit
Exposant = 11 bits
Mantisse = 52 bits

Conclusion

En conclusion, C utilise à la fois float et double pour les nombres décimaux, mais ils varient en termes de précision, d'utilisation de la mémoire, de plage et de vitesse. Lorsque l'espace est limité et que la précision peut être compromise, il est préférable d'utiliser float, tandis que double est utilisé pour les applications de haute précision où l'espace n'est pas un problème. Il est essentiel de choisir le type de données approprié en fonction des exigences de l'application.