Cómo convertir Float en Int en C++
- 
          
            Usar la asignación directa para convertir un floatenint
- 
          
            Usar el molde de estilo C para convertir el floata int
- 
          
            Usa static_castpara convertir Float a Int
 
Este artículo demostrará múltiples métodos sobre cómo convertir un float en un int en C++.
Usar la asignación directa para convertir un float en int
    
La conversión entre los valores de float y int se puede hacer usando el operador de asignación. En este caso, la variable float se convertirá implícitamente al tipo int, y el valor se reducirá al segundo tipo, perdiendo todos los dígitos después del punto decimal. Note que usamos un vector de int para almacenar el float y luego dar salida a cada entero a la consola para una mejor demostración.
#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;
Usar el molde de estilo C para convertir el float a int
Otra solución es un molde de estilo C con (typename) notación. Este método se considera normalmente inseguro en el C++ moderno, pero si el programador lo usa correctamente, el código se ejecutará como se espera. Nota: nunca lances punteros a clases incompletas ya que puede llevar a un comportamiento 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;
Usa static_cast para convertir Float a Int
Según la recomendación del C++ moderno, uno debe utilizar named cast para convertir un valor float en un número entero. static_cast convierte los tipos sin comprobar el valor, por lo que el programador es responsable de asegurar la corrección. Nótese que los named casts y su comportamiento es bastante complicado de comprender con una sola visión general, así que aquí está el manual completo de static_cast que enumera todos los casos y características de los bordes.
#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