Maison >développement back-end >C++ >Programme C++ pour convertir une variable de type double en type int

Programme C++ pour convertir une variable de type double en type int

PHPz
PHPzavant
2023-08-25 20:25:185715parcourir

Programme C++ pour convertir une variable de type double en type int

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.

Conversion implicite

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.

Grammaire

double input = <double value>;
int output = input;

Algorithme

  • Prenez une valeur double en entrée ;
  • Attribuez une valeur à une variable entière.
  • Afficher la sortie.

Exemple

#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;
}

Sortie

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.

Conversion explicite

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.

Algorithme

  • Prenez une valeur double en entrée ;
  • Utilisez la conversion de type explicite pour attribuer des valeurs à des variables entières.
  • Afficher la sortie.

Mentionner le type de données lors de l'affectation

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.

Version style C

Le type de données du résultat est spécifié avant la variable source, entre parenthèses.

Grammaire

double input = <double value>;
int output = (int) input;

Exemple

#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;
}

Sortie

The value before conversion: 84.4439
The value after conversion: 84

Casting fonctionnel

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.

Grammaire

double input = <double value>;
int output = int(input);

Exemple

#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;
}

Sortie

The value before conversion: -993.657
The value after conversion: -993

Utilisez static_cast

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.

Grammaire

double input = < double value>;
int output = static_cast<int>(input);

Exemple

#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;
}

Sortie

The value before conversion: -65.2354
The value after conversion: -65

Conclusion

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer