나눗셈 문제. 이 문제에는 "스페셜 저지" 표시가 붙어 있는데, 이것은 예제 출력과 꼭 똑같이 출력할 필요는 없고 조건에 맞는 답을 출력하면 된다는 뜻입니다.
float : 32비트(4바이트) 자료형
double : 64비트(8바이트) 자료형
듣기로는 오차 범위는 float 가 10-7 전후 정도라고 하고, double은 10-15 정도라고 함.(정확?)
추가로 long double 자료형을 써도 됨.
윈도우 또는 Visual Studio를 사용하는 경우 long double과 double 이 모두 8바이트이기 때문에 코드를 작성할 때 둘 중 하나를 택하더라도 크게 다르지 않을 것 같지만, 백준 채점 환경은 OS가 Ubuntu 라서 long double 자료형의 경우 16바이트를 사용하기 때문에 좀 더 정확한 값을 얻을 수 있음.
또한 '오차 범위'가 10-9 이하여야 하기 때문에 출력 할 때도 출력 할 소수점 자리를 9개 이상 출력하도록 해야한다는 점 유의.
cin, cout을 사용할 경우 소수점 자리를 공정하여 출력할 수 있음.
하나는 std::fixed, 또 하나는 std::cout.precision()
precision()
출력 할 실수 전체 자리수를 n자리로 표현(소수점 아래로 n자리만큼 고정하는 것이 아님.)
double a = 1234.5678;
std::cout.precision(6);
std::cout << a; // 1234.567 에서 반올림 된 1234.57 이 출력 됨
fixed
고정 소수점 표기로 만약 fixed를 쓰면 그 다음부터 들어오는 출력들은 소수점 아래로 설정한 precision으로 넘겨준 값 만큼 출력
(precision()이랑 같이 사용)
해제하고 싶다면 cout.unsetf() 에 ios::fixed
double a = 3333.333333;
std::cout.precision(6);
std::cout << a; // 3333.33 이 출력됨
std::cout << std::fixed; // 고정 소수점 표기로 전환
std::cout << a; // 3333.333333 이 출력 됨
std::cout.unsetf(ios::fixed); // 고정 소수점 표기 해제
std::cout << a; // 3333.33 이 출력됨
이때, A,B 모두 자료형 변경하거나 결과값에 형변환을 해주어야 함.
#include <iostream>
using namespace std;
int main() {
double A, B;
cin >> A >> B;
cout.precision(12);
cout << fixed;
cout << A / B;
return 0;
}
/*
int main() {
int A, B;
cin >> A >> B;
cout.precision(12);
cout << fixed;
cout << (double) A / B;
return 0;
}
*/