백준 1008번 [ A/B ]

홍수민·2023년 1월 2일
0

BAEKJOON이다

목록 보기
1/18

https://www.acmicpc.net/problem/1008


짱 쉬워보인다!

그래서 우왕 쉽네 이러고 호다닥 작성해서 냈는데, 6번째 시도만에 겨우겨우 성공했다...^^*

그 이유는 바로 소수점..!

C++에서 소수점 자리수를 맞추기 위해서는 " cout.precision(); " 이 필요하다.

cout.precision(5); 라고 적으면, 소수점 5번째 자리까지 나온다.

이 내용을 토대로 작성한 코드 !

1번째 코드

#include <iostream>
using namespace std;

int main(){
    int A, B;
    cin >> A >> B;
  
    long double C;
    C = (double)A/(double)B;
    
    cout.precision(10);
  
    if((A>0)&&(B>0)&&(A<10)&&(B<10)){
        cout << C;
    }
    else
        cout << "Use valid number! (0<A,B<10)";
  
    return 0;
}

-> 입력: 1 3 / 출력: 0.3333333333
-> 입력: 4 5 / 출력: 0.8

-> 참고로 (double)로 형변환 안 해주면 0이 출력된다

cout.precision();과 더불어 하나 더 알아둘 것은 cout<<fixed;와 같이 사용할 수도 있다는 점이다. 이 친구를 같이 써준 코드는 다음과 같다.

2번째 코드

#include <iostream>
using namespace std;

int main(){
    int A, B;
    cin >> A >> B;
  
    long double C;
    C = (double)A/(double)B;

    cout << fixed;
    cout.precision(10);
  
    if((A>0)&&(B>0)&&(A<10)&&(B<10)){
        cout << C;
    }
    else
        cout << "Use valid number! (0<A,B<10)";
  
    return 0;
}

-> 입력: 1 3 / 출력: 0.3333333333
-> 입력: 4 5 / 출력: 0.8000000000

-> cout.precision(); 앞에다 써주면 된다.
-> 출력값에서 알 수 있듯이 소수점 자리수가 고정되는 거다.

이에 더하여 cout와 cin 말고 printf와 scanf를 활용할 수도 있다.

3번째 코드

#include <stdio.h>

int main()
{
	double a, b;
	
	scanf("%lf %lf", &a, &b);
	printf("%.9lf", a / b);

  return 0;
}

-> 입력: 1 3 / 출력: 0.333333333
-> 입력: 4 5 / 출력: 0.800000000

-> 참고로 float를 쓰면 소수점 아래 6자리까지만 출력이 가능하다

profile
수만이다

0개의 댓글