문제

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A/B를 출력한다. 절대/상대 오차는 10^-9 까지 허용한다.

예제 입력/출력

입력 출력
1 3 0.33333333333333333333333333333333
4 5 0.8

코드

#include <cstdlib>
#include <iostream>

using namespace std;

int main() {
	int a, b;
	double ans;

	scanf("%d %d", &a, &b);
	
	ans = (double)a / b;  // double형으로 타입캐스팅
	
	// 1. c++ cout로 소수점 지정
	cout.setf(ios::fixed); //소수점 아래 자리수 강제 출력 지정
	cout.precision(9); // 원하는 자리수
	cout << ans << endl;

	// 2. c printf로 소수점 지정
    printf("%.9lf\n", ans);
	
	return 0;
}

풀이

문제는 어렵지 않다. 단순히 a,b 값을 받아 나눠서 문제에서 요구한대로 소수점 9자리까지 몫 값을 출력한다.

  1. C의 경우: printf문에서 %.9lf로 한다.
    => %lf(double형 출력) + .9(소수점 9번째 자리까지 출력)
  2. C++의 경우: precision, setf 사용.
    precision만 사용한다면면 소수점 표기는 최대 지정한 숫자까지 유동적으로 변함.
    setf를 사용한다면 소수점 자리수를 지정하기 때문에 무조건 해당 자리까지 출력. 강제성을 띔.
    cf) cout.unsetf(ios::fixed) : setf로 강제한 소수점 자리수 강제성 취소.