문제
A/B를 출력하는 프로그램을 작성하라.
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
풀이
문제 자체는 쉬우니 유의할 점 두 가지만 적어본다.
float
과 double
중 오차 범위를 고려해서 사용할 것float
과 double
은 각각 4byte, 8byte 자료형이다.
float의 상대 오차는 약 10^-7 정도이고, double의 상대 오차는 약 10^-15 정도이다.
따라서, 이 문제에서는 double
을 사용해야한다.
float 일 경우 : 1/3 => 출력 0.333333343
double 일 경우 : 1/3 => 출력 0.333333333
풀이 코드
#include<iostream>
using namespace std;
int main(void){
cin.tie(NULL); ios_base::sync_with_stdio(false);
double a,b;
cin>>a>>b;
cout << fixed;
cout.precision(9);
cout<<a/b;
}
https://www.acmicpc.net/blog/view/37
부동소수점 오류에 관해 설명한 백준 글인데 참고하면 좋을 것 같다.!