(C++) Nombres réels


Nombres réels

flottant r = 5,0 La valeur 5.0 est un nombre représenté sous forme de fraction décimale (comporte un entier et une partie fractionnaire). En informatique, ces nombres sont appelés nombres réels.
 
Un nombre réel est un nombre composé d'une partie entière et d'une partie fractionnaire. Les parties entières et fractionnaires sont séparées l'une de l'autre par un point, et non par une virgule comme en mathématiques.

Même si la partie fractionnaire du nombre est égale à zéro, comme dans la variable r dans l'exemple, le compilateur créera toujours une variable réelle en mémoire. Le point, pour ainsi dire, un signal pour le traducteur qu'il est nécessaire de créer une variable réelle. 

Les nombres très grands et très petits  s'écrivent en "virgule flottante" (dans le soi-disant format scientifique).  
Au format scientifique, un nombre est représenté par mantisse(partie significative du nombre) et exposant. Lorsqu'ils sont écrits, la mantisse et l'exposant sont séparés l'un de l'autre par la lettre e (indiquant 10 dans une certaine mesure). 
Par exemple, vous pouvez stocker la valeur de la charge d'un électron dans une variable 
\(1,60217662 \times 10^{-19}\) Kl), écrit comme   flottantEl= 1.60217662e-19 // pour un ordre positif, le signe + peut être omis
Presque tous les nombres réels ne peuvent pas être stockés dans la mémoire de l'ordinateur avec une précision parfaite, car un nombre limité de bits est alloué pour leur stockage. Par conséquent, lors du calcul avec des nombres réels, les erreurs liées à l'imprécision de la représentation s'accumulent. De plus, moins il y a d'espace alloué, plus cette erreur sera importante. Afin de réduire l'erreur en C++, le type double est utilisé, qui stocke un nombre réel avec double précision en mémoire (occupe huit octets en mémoire, tandis que le type float - 4 octets).

Entrez

Vous pouvez saisir plusieurs variables réelles à partir du flux d'entrée et les écrire dans des variables de la manière standard : flottant x, y ; cin>> x>>> y; Le premier nombre va dans la variable x, le second - dans y.



Conclusion

Lors de l'affichage des nombres réels, 6 décimales sont affichées par défaut, avec le format scientifique ou virgule fixe automatiquement sélectionné.
Le format de sortie peut être personnalisé. Pour cela, une bibliothèque supplémentaire iomanip est utilisée - des manipulateurs qui contrôlent la sortie.
Pour la sortie au format virgule fixe, le manipulateur  fixe est utilisé, pour le format scientifique - scientifique. Ensuite, vous devez déterminer le nombre de chiffres dans la partie fractionnaire à l'aide du manipulateur  setprecision(). A l'aide du manipulateur setw(), vous pouvez définir le nombre total de positions allouées pour la sortie du numéro.

 
Exemple
flottant x = 1,0/6 ; cout << fixe << setprecision(9); // défini pour afficher 9 chiffres dans la partie fractionnaire cout << setw(12) << X;
L'écran affichera _0.166666672
Toutes les commandes peuvent être écrites sur une seule ligne : cout << fixe << setprecision(9) << setw(12) << x ;

Opérations avec des nombres réels. module cmath

Lorsque vous travaillez avec des nombres réels, nous pouvons utiliser le module math déjà familier, qui contient un grand nombre de fonctions intégrées. 
Lors de la résolution de problèmes, il est souvent nécessaire d'arrondir les nombres réels aux valeurs entières les plus proches. Il y a deux fonctions pour cela.

Ne pas oublier !
1. avec conversion de type explicite ( float x=1.5 ; int y = int(x))  -  la partie fractionnaire d'un nombre réel est coupée (y = 1); 
2. fonction étage(x) -  ; renvoie le plus grand entier inférieur ou égal à x (arrondi à l'inférieur);
3. fonction ceil(x) -  renvoie le plus petit entier supérieur ou égal à x (arrondi).

Voici les fonctions les plus utiles contenues dans le module cmath.
Fonction Description
Arrondi
rond(x)
C++11
Arrondit un nombre à l'entier le plus proche. Si la partie fractionnaire du nombre est 0,5, le nombre est arrondi au nombre entier le plus proche. 
trunc(x)
C++11
Rejette la partie fractionnaire
étage(x) Arrondit un nombre inférieur ("floor"), donc floor(1.5) == 1floor(-1.5) ==  ; -2
plafond(x) Arrondit un nombre supérieur ("plafond"), tandis que ceil(1.5) == 2ceil(-1.5) ==  ; -1
abs(x) Modulo (valeur absolue).
fabs(x) Nombre réel modulo
Racines, logarithmes
sqrt(x) Racine carrée. Utilisation : y = sqrt(x)
pow(x, y) Élève x à la puissance y. \(x^y\)
log(x) Logarithme naturel. 
exp(x) La base des logarithmes naturels e = 2,71828...
Trigonométrie
sin(x) Sinus d'un angle spécifié en radians
cos(x) Cosinus d'un angle spécifié en radians
tan(x) La tangente d'un angle spécifié en radians
asin(x) Arcsinus, renvoie la valeur en radians
acos(x) Arc cosinus, renvoie la valeur en radians
atan(x) Arctangente, renvoie la valeur en radians
atan2(y, x) Angle polaire (en radians) du point (x, y).