C++에서 Float를 Int로 변환

Jinku Hu 2023년10월12일
  1. 직접 할당을 사용하여 Float를 Int로 변환
  2. C 스타일 캐스트를 사용하여 Float를 Int로 변환
  3. static_cast를 사용하여 Float를 Int로 변환
C++에서 Float를 Int로 변환

이 기사는 C++에서floatint로 변환하는 방법에 대한 여러 방법을 보여줍니다.

직접 할당을 사용하여 Float를 Int로 변환

floatint 값 사이의 변환은 할당 연산자를 사용하여 수행 할 수 있습니다. 이 경우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;
작가: 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

관련 문장 - C++ Float