백준 1008번 A/B 문제 https://www.acmicpc.net/problem/1008
1008번: A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제 조건 중요)첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
C언어에서 풀 때는
#include <stdio.h>
int main()
{
int A;
int B;
scanf("%d %d", &A, &B);
printf("%.9f", (double) A/B);
return 0;
}
printf의 인자로 출력 형식을 지정해줬지만 C++은 cin, cout을 써서 다른 방식을 써야 한다.
처음에는
cin >> A>>B;
cout<<(double)A/B;
만 써주니 오차가 10^(-9)보다는 커서 틀렸다고 나왔다.
그래서 setw 함수를 쓸까 했는데 setw는 공간지정이어서 여기서는 부적절한 함수다.
구글링한 결과 cin, cout으로 오차가 10^(-9)이하가 되게 해주려면 다음과 같이 써준다.
cout<<fixed;
cout.precision(9);
//precision의 인자로 소수점 자리를 써야 한다.
#include <iostream>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int A,B;
cin >> A>>B;
cout << fixed;
cout.precision(9);
cout <<(double)A/B; // A,B가 원래 int형이니 꼭 double형으로 강제 형 변환을
//해줘야 되고 안 그러면 정수형 덧셈만 된다.
return 0;
}
주의할 점은 int A,B;로 선언하고 (double)A/B 등의 실수 자료형으로 강제 형 변환하지 않으면
정수형 나눗셈이 되어서 0이 나온다.
참고 자료)https://shallwestudy.tistory.com/11
[C++ study] 출력, namespace, <<연산자, 출력 형식 지정
공부를 시작하면서 제일 첫 단계는 "Hello World"를 화면에 출력하는것이다. 기본적인 출력문을 하나하나 뜯어보는 단계를 가져보겠다. std::cout << "Hello World" << endl; 한 줄 해석: namespace std에 있는 co..
shallwestudy.tistory.com
C언어 실수 자료형
백준 class1) 11720번 숫자의 합 (0) | 2022.08.11 |
---|---|
백준 class1)10951번 A+B-4 (0) | 2022.08.10 |
백준 10951번 A+B-4 오답 (0) | 2022.08.10 |
백준 2475번 검증수 (0) | 2022.08.10 |
백준 1074 Z (0) | 2022.08.08 |
댓글 영역