Cómo convertir Float en Int en C++

Jinku Hu 12 octubre 2023
  1. Usar la asignación directa para convertir un float en int
  2. Usar el molde de estilo C para convertir el float a int
  3. Usa static_cast para convertir Float a Int
Cómo convertir Float en Int en C++

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;
Autor: 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

Artículo relacionado - C++ Float