본문 바로가기
Computer Science/PS

[ps] cout << fixed; 와 cout.precision(1)

by BrickSky 2024. 1. 2.

문제를 풀어도 풀어도 왜 정답이 나오지 않을까 고민했다.
 
우선 처음 작성했던 코드를 실행하면 원하는 대로 결과가 출력되지 않는다.

#include <iostream>
using namespace std;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    string grade;
    cin >> grade;
    
    if(grade=="A+"){
        cout << 4.3;
    }
    else if (grade=="A0"){
        cout << 4.0;
    }
    else if (grade=="A-"){
        cout << 3.7;
    }
    else if (grade=="B+"){
        cout << 3.3;
    }
    else if (grade=="B0"){
        cout << 3.0;
    }
    else if (grade=="B-"){
        cout << 2.7;
    }
    else if (grade=="C+"){
        cout << 2.3;
    }
    else if (grade=="C0"){
        cout << 2.0;
    }
    else if (grade=="C-"){
        cout << 1.7;
    }
    else if (grade=="D+"){
        cout << 1.3;
    }
    else if (grade=="D0"){
        cout << 1.0;
    }
    else if (grade=="D-"){
        cout << 0.7;
    }
    else if (grade=="F"){
        cout << 0.0;
    }
}

 
문제점은 명확했다.

  1. 소수점 형식으로 출력하지 못한다.

 
해당 문제를 해결하기위해 구글링을 통해 다른 사람들이 풀었던 풀이를 참고했다. 
찾아보니 대부분의 코드에 소수점 출력을 지정하는 내용의 코드가 포함되어 있었다.

    cout << fixed;
    cout.precision(1);

 
처음엔 이 코드가 뭘 의미하는지 도저히 알 수 없었다.
 
차례대로 살펴보자면,
 
1. cout << fixed;
해당 명령어는 cout을 사용하여 부동 소수점 숫자를 출력할 때 사용한다. 
즉, 고정 소수점 표기법으로 출력을 할 수 있다는 것!
 
2. cout.precision(1);
해당 명형어는 부동 소수점 숫자의 소수점 이하의 자릿수를 1자리로 설정하는 것이다.
즉, 출력되는 숫자는 소수점 첫 번째 자리까지만 출력되는 것이다.
 
이렇게 2개의 코드를 활용해서 소수점 1자리까지 고정적으로 출력하겠다!라고 결정한 것이다.
 
해당 코드를 넣어주면!
문제에서 의도한대로 소수점 1자리까지 정상적으로 출력할 수 있다.

'Computer Science > PS' 카테고리의 다른 글

[PS] while()문  (1) 2024.01.04
[PS] 문자열의 길이를 반환하는 .length()  (1) 2024.01.03
[PS] 별 찍기 모음  (0) 2023.12.24
[PS] 15552. 빠른 A+B  (1) 2023.12.19
[PS] 10804. 카드 역배치  (2) 2023.12.18