[BOJ/C++] 1008 A/B

mani·2023년 5월 18일
0

baekjoon_step

목록 보기
5/73

나눗셈 문제. 이 문제에는 "스페셜 저지" 표시가 붙어 있는데, 이것은 예제 출력과 꼭 똑같이 출력할 필요는 없고 조건에 맞는 답을 출력하면 된다는 뜻입니다.

부동소수점 개념

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;
}
*/
profile
log

0개의 댓글