[BOJ] 1008_A/B.cpp

gogori6565·2022년 9월 2일
0

문제
A/B를 출력하는 프로그램을 작성하라.
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.


풀이
문제 자체는 쉬우니 유의할 점 두 가지만 적어본다.

  1. 소수점 아래 9번째 자리까지 출력해야 한다는 것
  2. 실수 자료형 floatdouble 중 오차 범위를 고려해서 사용할 것

floatdouble 은 각각 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/problem/1008

https://www.acmicpc.net/blog/view/37
부동소수점 오류에 관해 설명한 백준 글인데 참고하면 좋을 것 같다.!

profile
p(´∇`)q

0개의 댓글