Wie konvertiert man Float nach Int in C++

Jinku Hu 12 Oktober 2023
  1. Direkte Zuweisung verwenden, um Float in Int zu konvertieren
  2. Verwenden Sie Cast im C-Stil, um Float in Int zu konvertieren
  3. Verwenden Sie static_cast, um Float in Int zu konvertieren
Wie konvertiert man Float nach Int in C++

Dieser Artikel wird mehrere Methoden demonstrieren, wie man ein float in ein int in C++ konvertiert.

Direkte Zuweisung verwenden, um Float in Int zu konvertieren

Die Konvertierung zwischen den Werten float und int kann mit dem Zuweisungsoperator durchgeführt werden. In diesem Fall wird die Variable float implizit in den Typ int umgewandelt, und der Wert wird auf den zweiten Typ eingegrenzt, wobei alle Nachkommastellen verloren gehen. Beachten Sie, daß wir einen Vektor von int verwenden, um die float zu speichern und dann jede ganze Zahl zur besseren Demonstration auf der Konsole auszugeben.

#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;
}

Ausgabe:

12; 32; 534;

Verwenden Sie Cast im C-Stil, um Float in Int zu konvertieren

Eine andere Lösung ist eine Besetzung im C-Stil mit (Typename) Notation. Diese Methode wird in der Regel in modernem C++ als unsicher angesehen, aber wenn der Programmierer sie korrekt verwendet, wird der Code wie erwartet ausgeführt. Beachten Sie, niemals Zeiger auf unvollständige Klassen zu werfen, da dies zu undefiniertem Verhalten führen kann.

#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;
}

Ausgabe:

12; 32; 534;

Verwenden Sie static_cast, um Float in Int zu konvertieren

Gemäß der modernen C++-Empfehlung sollte man named cast verwenden, um einen float-Wert in eine ganze Zahl umzuwandeln. static_cast wandelt die Typen um, ohne den Wert zu prüfen; daher ist der Programmierer für die Sicherstellung der Korrektheit verantwortlich. Beachten Sie, dass benannte Casts und ihr Verhalten mit einem einzigen Überblick recht kompliziert zu erfassen sind, daher gibt es hier das vollständige Handbuch von static_cast, in dem alle Grenzfälle und Funktionen aufgelistet sind.

#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;
}

Ausgabe:

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

Verwandter Artikel - C++ Float