Converti Float in Int in C++
- Usa l’assegnazione diretta per convertire Float in Int
- Usa Cast in stile C per convertire Float in Int
-
Usa
static_cast
per convertire Float in Int
Questo articolo mostrerà diversi metodi su come convertire un float
in un int
in C++.
Usa l’assegnazione diretta per convertire Float in Int
La conversione tra i valori float
e int
può essere eseguita utilizzando l’operatore di assegnazione. In questo caso, la variabile float
verrà convertita implicitamente nel tipo int
e il valore verrà ridotto al secondo tipo, perdendo tutte le cifre dopo il punto decimale. Notare che usiamo un vettore di int
per memorizzare il float
e quindi inviamo ogni intero alla console per una migliore dimostrazione.
#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;
}
Produzione:
12; 32; 534;
Usa Cast in stile C per convertire Float in Int
Un’altra soluzione è un cast in stile C con la notazione (typename)
. Questo metodo è generalmente considerato non sicuro nel C++ moderno, ma se il programmatore lo utilizza correttamente, il codice verrà eseguito come previsto. Nota per non lanciare mai puntatori a classi incomplete in quanto può portare a un comportamento indefinito.
#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;
}
Produzione:
12; 32; 534;
Usa static_cast
per convertire Float in Int
Secondo la moderna raccomandazione del C++, si dovrebbe utilizzare named cast per convertire un valore float
in un intero. static_cast
converte i tipi senza controllare il valore; quindi il programmatore è responsabile di garantire la correttezza. Nota che i cast con nome e il loro comportamento sono piuttosto complicati da comprendere con un’unica panoramica, quindi ecco il manuale completo di static_cast
che elenca tutti i casi limite e le caratteristiche.
#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;
}
Produzione:
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