[백준 | C++] 1008. A/B

수아·2024년 8월 21일
0

codingtest

목록 보기
1/7

문제

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

입력

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

출력

첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.

예시 입력/출력

1 3 / 0.33333333333333333333333333333333

정답 코드

#include <iostream>
using namespace std;
    
    int main(){
    int a,b;
    cin>>a>>b;
    cout.precision(10);
    cout<<(double)a/b<<endl;
}

1번째 제출

#include <iostream>

using namespace std;
int main(){
    int A,B;
    float x;
    cin>>A>>B;
    x = A/B;
    cout << x <<endl;
return 0;
}

출력 값 : 0
단순히 실수에 나눗셈 값을 저장하면 나눗셈 값일 나올 거라고 생각했다...

2번째 제출

#include <iostream>

using namespace std;
int main(){
    int A,B;
    cin>>A>>B;

    cout << (float)A/B <<endl;
return 0;
}

출력값: 0.333333
A/B 결과를 다른 변수에 저장하지 않고 바로 출력했더니 원하는 형식으로 담겼지만 오차가 10^-9보다 커서 실패

3번째 제출

#include <iostream>

using namespace std;
int main(){
    int A,B;
    cin>>A>>B;
    cout.precision(10); //출력값을 소수점 10자리로 하기 위해
    cout << (float)A/B <<endl;
return 0;
}

출력값 : 0.3333333433
소수점 10자리로는 나왔지만 원하는 출력 값과 아주 조금 다르다

왜?!!

double vs float

[https://www.simplilearn.com/tutorials/cpp-tutorial/cpp-double]


double이 float 보다 두배의 정밀도를 가지고 있다는 것!

앞으로도 문제에서 '상대오차가 10-9 이하이면 정답' 같은 조건이 주어질 땐 double을 사용할 것!

profile
이제 갓 태어난 공순

0개의 댓글

관련 채용 정보