Wie konvertiert man Float nach Int in C++
- Direkte Zuweisung verwenden, um Float in Int zu konvertieren
- Verwenden Sie Cast im C-Stil, um Float in Int zu konvertieren
-
Verwenden Sie
static_cast
, um Float in Int zu konvertieren
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;
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