float, nombre à virgule flottante simple précisionDans la machine, il occupe 4 octets, décrit à l'aide d'un binaire de 32 bits.
nombre à virgule flottante en double précisionDans la machine, il occupe 8 bytes, décrit par du binaire 64-bit.

Les nombres à virgule flottante sont représentés sous forme exponentielle à l’intérieur de la machine, décomposés en :signe, mantisse, signe de l’exposant, exposantQuatre parties.
Le bit de signe occupe 1 chiffre binaire, indiquant si le nombre est positif ou négatif.
Le signe de l’exposant occupe 1 bit binaire, indiquant si l’exposant est positif ou négatif.
La mantisse représente les chiffres significatifs d’un nombre à virgule flottante, 0.xxxxxxx, mais ne stocke pas le 0 de tête et le point décimal.
L’exposant stocke ses chiffres significatifs.
Le nombre de bits pour l’exposant et le nombre de bits pour la mantisse sont déterminés par le système informatique.
Peut-être que le signe du nombre plus la mantisse occupe 24 bits, et le signe de l’exposant plus l’exposant occupe 8 bits --float。
Le signe plus la mantisse occupe 48 bits, et le signe de l’exposant plus l’exposant occupe 16 bits —double。
Une fois que vous connaissez les emplacements de ces quatre parties, estimez la plage de taille en binaire, puis convertissez en décimal—cela vous donne la plage de valeurs que vous voulez connaître.
Pour les programmeurs, la différence entre double et float est que double a une précision plus élevée, avec 16 chiffres significatifs, tandis que float a 7 chiffres de précision. Mais double consomme deux fois plus de mémoire que float, et la vitesse de calcul de double est bien plus lente que celle de float. En langage C, les noms des fonctions mathématiques pour double et float sont différents, alors ne les écrivez pas incorrectement. Lorsque la simple précision suffit, n’utilisez pas la double précision (pour économiser de la mémoire et accélérer les calculs).
| Type | nombre de bits | chiffres significatifs | Plage numérique |
|---|---|---|---|
| float | 32 | 6-7 | -3.4*10(-38)~3.4*10(38) |
| double | 64 | 15-16 | -1.7*10(-308)~1.7*10(308) |
| long double | 128 | 18-19 | -1.2*10(-4932)~1.2*10(4932) |
En termes simples, Float est à simple précision, occupant 4 octets en mémoire, avec 7 chiffres significatifs (en raison des signes positif et négatif, ce n'est pas 8 chiffres) ; sur mon ordinateur et la plate-forme VC++6.0, l'affichage par défaut est de 6 chiffres significatifs ; double est à double précision, occupant 8 octets, avec 16 chiffres significatifs, mais sur mon ordinateur et la plate-forme VC++6.0, l'affichage par défaut est également de 6 chiffres significatifs.
Exemple : en C et C++, l'instruction d'affectation suivante :
float a=0.1;
Erreur du compilateur :warning C4305: 'initializing' : truncation from 'const double ' to 'float '
Raison :En C/C++ (je ne suis pas sûr que ce soit uniquement le cas dans VC++), pour le 0.1 à droite du signe égal dans l'instruction ci-dessus, nous pensons qu'il s'agit d'un float, mais le compilateur le traite comme un double (car les littéraux décimaux sont par défaut de type double), c'est pourquoi il émet cet avertissement. Généralement, on le change en...0.1fEnsuite, tout va bien.
Ma pratique habituelle est d'utiliser fréquemment double, et je n'aime pas utiliser float.
En C et C#, le type à simple précision est utilisé pour les données à virgule flottante.floatet le type à double précisiondoublepour stocker,floatLes données occupent 32 bits,doubleLes données occupent 64 bits, nous déclarons une variable.float f= 2.25fQuand il s'agit de l'allocation, comment la mémoire est-elle allouée ? Si elle était allouée aléatoirement, le monde ne serait-il pas en chaos ? En fait, que ce soit float ou double, les deux suivent les normes IEEE pour le stockage : float suit IEEE R32.24, et double suit R64.53.
Qu'il s'agisse de simple précision ou de double précision, en stockage, ils sont divisés en trois parties :
- Bit de signe : 0 représente positif, 1 représente négatif.
- Bits d'exposant : servent à stocker les données d'exposant en notation scientifique et utilisent une représentation biaisée.
- Partie mantisse : Partie mantisse.
Adresse source : https://my.oschina.net/zd370982/blog/724265