Comment convertir Float en Int en C++

Jinku Hu 12 octobre 2023
  1. Utiliser l’assignation directe pour convertir un float en Int
  2. Utilisez le style C Cast pour convertir le float en Int
  3. Utilisez static_cast pour convertir Float en Int
Comment convertir Float en Int en C++

Cet article présente plusieurs méthodes de conversion d’un float en un int en C++.

Utiliser l’assignation directe pour convertir un float en Int

La conversion entre les valeurs float et int peut être effectuée à l’aide de l’opérateur d’affectation. Dans ce cas, la variable “float” sera implicitement convertie en type int, et la valeur sera réduite au second type, perdant tous les chiffres après la virgule. Notez que nous utilisons un vecteur de type int pour stocker le float et ensuite sortir chaque entier vers la console pour une meilleure démonstration.

#include <iostream>
#include <string>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<float> f_vec{12.123, 32.23, 534.333333339};
  vector<int> i_vec;

  i_vec.reserve(f_vec.size());
  for (const auto &f : f_vec) {
    i_vec.push_back(f);
  }

  for (const auto &i : i_vec) {
    cout << i << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

12; 32; 534;

Utilisez le style C Cast pour convertir le float en Int

Une autre solution est un casting de style C avec la notation (typename). Cette méthode est généralement considérée comme peu sûre dans le C++ moderne, mais si le programmeur l’utilise correctement, le code s’exécutera comme prévu. Il est à noter de ne jamais lancer de pointeurs vers des classes incomplètes car cela peut conduire à un comportement indéfini.

#include <iostream>
#include <string>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<float> f_vec{12.123, 32.23, 534.333333339};
  vector<int> i_vec;

  i_vec.reserve(f_vec.size());
  for (const auto &f : f_vec) {
    i_vec.push_back(int(f));
  }

  for (const auto &i : i_vec) {
    cout << i << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

12; 32; 534;

Utilisez static_cast pour convertir Float en Int

Selon la recommandation du C++ moderne, il faut utiliser le cast nommé pour convertir une valeur float en un entier. Le static_cast convertit les types sans vérifier la valeur ; le programmeur est donc responsable de s’assurer de l’exactitude de la conversion. Notez que les castes nommées et leur comportement sont assez compliqués à appréhender avec une seule vue d’ensemble, donc voici le manuel complet de static_cast listant tous les cas et caractéristiques des bords.

#include <iostream>
#include <string>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<float> f_vec{12.123, 32.23, 534.333333339};
  vector<int> i_vec;

  i_vec.reserve(f_vec.size());
  for (const auto &f : f_vec) {
    i_vec.push_back(static_cast<int>(f));
  }

  for (const auto &i : i_vec) {
    cout << i << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

12; 32; 534;
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ Float