본문 바로가기

알고리즘

[백준] 10998 - A / B 부동소수점 | C++

 

#문제

 

 

#풀이

#include <bits/stdc++.h>
using namespace std;

int main(void){
    int a, b;
    cin >> a >> b;
    
    cout.precision(10);
    cout << (double) a / b;
    return 0;
}

 

앞에 문제 풀다가 뭐가 문제인지 계속 틀렸다. 제목을 보니 앞에 문제들과는 다르게 스페셜 저지 문제였다.


이 문제를 풀면서 부동 소수점이라는 개념을 알게 되었다.

부동소수점 수는 고정된 소수점 숫자와 다르게 소수점의 위치를 바꾸어 표현할 수 있다.

 

다른 블로그들 보면 엄청 어렵게 설명 되어있는데 간단하게 설명하면

소수점을 어디까지 할지 정하는 것이다.

 

참고: https://cplusplus.com/reference/ios/ios_base/precision/

 

cout.precision(10)

precision() 은 출력할때 10자리 숫자를 출력할 수 있도록 한다.

이것을 사용하지 않으면 이렇게 6자리밖에 출력을 안하므로 오차 9자리이하 조건을 확인하지 못하여 틀렸습니다 라고 뜬다.

 

precision() 을 사용 안했을 때

 

 

입력은 정수로 받기에 int로 입력받고 출력을 실수로 출력하도록 하였다.

그리고 출력 부분을 자세히 보면 소수 9자리 이상을 출력해야 정답이라고 적혀있다.

그러므로 float 가 아닌 double을 써야한다.

 

float : 32비트(4바이트) 자료형이다.

double : 64비트(8바이트) 자료형이다.

 

double을 쓴다면 16자리 뒤에 숫자들은 쓰레기 값들이 생기 반면 

 

 

float를 쓰는 순간 7자리 뒤에 숫자들은 쓰레기 값들이 생기는걸 볼 수있다

float

 

 

이렇게 조건 두가지를 만족하면 문제는 정답입니다가 뜨게 된다

 

'알고리즘' 카테고리의 다른 글

[백준] 10998 - A x B | C++  (0) 2025.03.01
[백준] 1001 - A-B | C++  (0) 2025.03.01
[백준] 1000 - A+B | C++  (0) 2025.03.01
[백준] 2557- Hello world | C++  (0) 2025.03.01
C++ 알고리즘 공부 정리 ( 24. 3. 25 )  (0) 2025.03.01