• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

2.5 소수점 뒤가 0일 때

23.05.14 15:08 작성 조회수 561

1

안녕하세요?

이상하게도, 어떤 변수의 type을 double이나 float로 설정하고 5.0으로 초기화해준 후 변수를 출력시키면 소수점 뒤가 잘리고 5가 출력됩니다...

하지만 5.5 이런 식으로 초기화한 후 출력시키면 5.5로 잘 출력됩니다..

왜 소수점 뒤의 0은 생략되는 것일까요?ㅠㅠ

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.05.14

안녕하세요, 답변 도우미 Soobak 입니다.

C++ 에서는 출력 시 기본적으로 필요한 자릿수만큼만 출력하도록 설정되어 있기 때문입니다.

말씀하신 double 자료형을 5.0 으로 초기화한 후 출력하면, 필요한 가장 적은 자릿수인 5 만 출력하게 됩니다.
이는 소수점 이하의 숫자가 0 인 경우에는 출력할 필요가 없기 때문입니다.

만약, 항상 소수점 이하의 숫자를 일정한 자릿수로 출력하고자 하는 경우에는 std::fixedstd::setprecision 등을 사용하여 출력 형식을 지정해줄 수 있습니다.
std::fixed 는 소수점 이하를 고정된 자릿수로 표기하고, set::precision(n) 은 소수점 이하를 n 자리까지 표시하도록 합니다.

예시 코드를 첨부드립니다.

#include <iostream>
#include <iomanip>

int main()
{
  double d = 5.0;

  std::cout << std::fixed;
  std::cout << std::setprecision(1);

  std::cout << d << std::endl; // 5.0 으로 출력이 됩니다.

  return 0;
}