En C++, les variables de type int ne peuvent contenir que des valeurs entières positives ou négatives ; elles ne peuvent pas contenir de valeurs décimales. Des valeurs float et double sont disponibles à cet effet. Le type de données double a été créé pour stocker des décimales jusqu'à sept chiffres après la virgule. La conversion d'un entier en type de données double peut être effectuée automatiquement par le compilateur (appelée conversion "implicite"), ou elle peut être explicitement demandée par le programmeur au compilateur (appelée conversion "explicite"). Dans les sections suivantes, nous aborderons différentes méthodes de conversion.
Le compilateur effectue automatiquement des conversions de type implicites. Pour y parvenir, deux variables sont nécessaires : l’une de type virgule flottante et l’autre de type entier. Lorsque nous attribuons simplement une valeur ou une variable à virgule flottante à une variable entière, le compilateur s'occupe de toutes les autres choses. Cette conversion souffre d'une perte de données car les variables entières ne peuvent pas contenir de valeurs décimales après la virgule.
double input = <double value>; int output = input;
#include <iostream> using namespace std; int solve(double value) { int opVal = value; return opVal; } int main() { double ip = 25.3056; int op = solve(ip); cout<< "The input value is: " << ip << endl; cout<< "The output value is: " << op << endl; return 0; }
The input value is: 25.3056 The output value is: 25
Comme nous pouvons le voir, le processus de conversion est assez simple. Nous attribuons simplement les variables d'entrée aux variables de sortie ; aucune procédure supplémentaire n'est requise. En outre, vous pouvez voir que la partie fractionnaire de la valeur double n’est pas présente dans la sortie.
Lorsque le programmeur demande explicitement au compilateur de convertir un type de données en un autre, cela s'appelle une conversion explicite ou une conversion de type explicite. Il existe deux manières d'y parvenir : l'une consiste à déclarer explicitement le type de données lors de l'affectation et l'autre consiste à utiliser static_cast. Nous avons déjà discuté de la première méthode.
Il existe deux méthodes d'exécution différentes. L’une est une version de style C et l’autre est une conversion de style fonctionnel.
Le type de données du résultat est spécifié avant la variable source, entre parenthèses.
double input = <double value>; int output = (int) input;
#include <iostream> using namespace std; int solve(double value) { int opVal = (int)value; return opVal; } int main() { double ip = 84.4439; int op = solve(ip); cout<< "The value before conversion: " << ip << endl; cout<< "The value after conversion: " << op << endl; return 0; }
The value before conversion: 84.4439 The value after conversion: 84
Lorsque nous fournissons des arguments à une fonction, nous déclarons le type de données du résultat et mettons la valeur source entre parenthèses.
double input = <double value>; int output = int(input);
#include <iostream> using namespace std; int solve(double value) { int opVal = int(value); return opVal; } int main() { double ip = -993.6571; int op = solve(ip); cout<< "The value before conversion: " << ip << endl; cout<< "The value after conversion: " << op << endl; return 0; }
The value before conversion: -993.657 The value after conversion: -993
Pour convertir entre des types prédéfinis, utilisez des conversions statiques. De plus, ce transtypage, qui peut également être référencé explicitement, est chargé d'appliquer la conversion de type implicite.
double input = < double value>; int output = static_cast<int>(input);
#include <iostream> using namespace std; int solve(double value) { int opVal = static_cast<int>(value); return opVal; } int main() { double ip = -65.2354; int op = solve(ip); cout<< "The value before conversion: " << ip << endl; cout<< "The value after conversion: " << op << endl; return 0; }
The value before conversion: -65.2354 The value after conversion: -65
La conversion d'un type de données double en un type de données entier entraîne toujours une perte de données car une variable entière ne peut pas contenir la partie fractionnaire d'une variable double. Ces conversions sont utiles lorsque nous devons arrondir une valeur à sa valeur limite inférieure (la plus petite valeur entière étant donné une valeur décimale).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!