Converti Float in Int in C++

Jinku Hu 12 ottobre 2023
  1. Usa l’assegnazione diretta per convertire Float in Int
  2. Usa Cast in stile C per convertire Float in Int
  3. Usa static_cast per convertire Float in Int
Converti Float in Int in C++

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

Articolo correlato - C++ Float