Comment convertir Float en Int en C++
- Utiliser l’assignation directe pour convertir un float en Int
- Utilisez le style C Cast pour convertir le float en Int
-
Utilisez
static_cast
pour convertir Float en Int
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;
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