Converter Float em Int em C++
-
Utilizar a atribuição directa para converter um
float
emint
em C++ -
Utilizar o estilo C para converter o
float
emint
-
Utilize
static_cast
para Converter Flutuador em Int
Este artigo irá demonstrar múltiplos métodos de como converter um float
para um int
em C++.
Utilizar a atribuição directa para converter um float
em int
em C++
A conversão entre os valores float
e int
pode ser feita utilizando o operador de atribuição. Neste caso, a variável float
será implicitamente convertida para o tipo int
, e o valor será reduzido para o segundo tipo, perdendo todos os dígitos após o ponto decimal. Note-se que utilizamos um vector de int
para armazenar o float
e depois emitimos cada número inteiro para consola para melhor demonstração.
#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;
}
Resultado:
12; 32; 534;
Utilizar o estilo C para converter o float
em int
Outra solução é um molde ao estilo C com nome do tipo
. Este método é geralmente considerado inseguro em C++ moderno, mas se o programador o utilizar correctamente, o código será executado como esperado. Nota para nunca lançar apontadores para classes incompletas, pois pode levar a um comportamento indefinido.
#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;
}
Resultado:
12; 32; 534;
Utilize static_cast
para Converter Flutuador em Int
De acordo com a recomendação C++ moderna, deve-se utilizar o lista nomeado para converter um valor float
a um inteiro. O static_cast
converte os tipos sem verificar o valor; daí que o programador seja responsável por assegurar a correcção. Note-se que os moldes nomeados e o seu comportamento é bastante complicado de apreender com uma única visão geral, por isso aqui está o manual completo do static_cast
que lista todas as caixas e características de borda.
#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;
}
Resultado:
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