C++에서 Float를 Int로 변환
이 기사는 C++에서float
를int
로 변환하는 방법에 대한 여러 방법을 보여줍니다.
직접 할당을 사용하여 Float를 Int로 변환
float
와int
값 사이의 변환은 할당 연산자를 사용하여 수행 할 수 있습니다. 이 경우float
변수는 암시 적으로int
유형으로 변환되고 값은 두 번째 유형으로 좁혀지고 소수점 뒤의 모든 숫자가 손실됩니다. int
벡터를 사용하여float
를 저장 한 다음 더 나은 데모를 위해 각 정수를 콘솔에 출력합니다.
#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;
}
출력:
12; 32; 534;
C 스타일 캐스트를 사용하여 Float를 Int로 변환
또 다른 해결책은(typename)
표기법을 사용하는 C 스타일 캐스트입니다. 이 메서드는 일반적으로 최신 C++에서 안전하지 않은 것으로 간주되지만 프로그래머가 올바르게 사용하면 코드가 예상대로 실행됩니다. 정의되지 않은 동작으로 이어질 수 있으므로 불완전한 클래스로 포인터를 캐스팅하지 마십시오.
#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;
}
출력:
12; 32; 534;
static_cast
를 사용하여 Float를 Int로 변환
최신 C++ 권장 사항에 따라 명명 된 캐스트를 사용하여float
값을 정수로 변환해야합니다. static_cast
는 값을 확인하지 않고 유형을 변환합니다. 따라서 프로그래머는 정확성을 보장 할 책임이 있습니다. 명명 된 캐스트와 그 동작은 하나의 개요로 파악하기가 매우 복잡하므로 여기에 static_cast
의 전체 매뉴얼이 있습니다. 가장자리 케이스 및 기능.
#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;
}
출력:
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