반응형
C 예제.
정수 끼리의 나눗셈의 결과를 소수로 나오게 해보자!!
정수 / 정수 연산을 통해 결과가 소수점이 존재할 때 출력을 해보면
내가 생각하기엔 당연히 소수점 이하의 값도 출력이 될거라 생각했지만..
5 / 2 의 결과 값은 2가 나옵니다..
컴퓨터는 정수/정수 의 연산을 할 경우 결과가 소수점이 있다해도 정수/정수 이므로
소수점 아래 값은 그냥 제거해 버리기 때문에 이런 현상이 나오게 됩니다 ㅠ_ㅠ
내가 원하는 소수값을 출력하게 하기 위한 형변환 및 꼼수를
예제 소스를 통해 알려드리도록 하겠습니다.
예제 소스.
#include <stdio.h> int main() { int n1 = 0, n2 = 0; double ave = 0; printf("두개의 정수를 입력 하세요 : "); scanf("%d %d", &n1, &n2); // 정수/정수 ave = (n1+n2)/2; printf("입력받은 두수의 평균 : %.2lf\n\n", ave); // 형변환을 통한 소수/정수 ave = 0; ave = (double)(n1+n2)/2; printf("입력받은 두수의 평균 : %.2lf\n\n", ave); // 꼼수를 이용한 정수/소수 ave = 0; ave = (n1+n2)/2.0; printf("입력받은 두수의 평균 : %.2lf\n\n", ave); return 0; }
결과.
위의 결과를 보시면 (n1+n2) / 2 연산을 하고 출력한 첫번째 결과는 더블형의 변수 ave를 이용해
소수점 두번째 자리까지 출력을 했지만 2.00 이라는 결과가 나오고 있습니다.
형변환을 통해 (n1+n2) 의 값을 double 형으로 형변환을 해주고 똑같이 2 로 나눠주면
결과가 2.50 으로 정상적으로 나오게 됩니다.
세번째 결과도 n1 + n2 의 값을 2.0 이라는 소수로 나눠준다고 명시해주니
두번째와 마찬가지로 2.50 이라는 정상적인 결과를 출력해 줍니다.
이런 결과가 나오는건 정수 / 정수 의 나눗셈에선 절대 소수가 나오지 않기 때문입니다!!
그러니 정수와 정수를 나눠 결과값이 소수여야 한다면
둘중에 하나라도 형변환을 통해 소수로 변경 하거나 상수뒤에 .0 을 붙여서 소수라고 명시해 준다면
손쉽게 원하는 결과를 얻을수 있습니다.
혹시 궁금하신 사항이 있다면 ~ 댓글 주세요 ^^
반응형
'C/C++ > 예제' 카테고리의 다른 글
[C 예제] return 의 의미와 간단한 예제를 통한 쓰임새 확인 (7) | 2014.11.13 |
---|---|
[C 예제] 포인터를 이용해 두개의 변수 값을 서로 바꾸기 ! ( SWAP ) (0) | 2014.06.26 |
[C 예제] 야구 게임 만들기 ( BaseBall ) (2) | 2014.06.25 |
[C 예제] switch 문으로 계산기 만들기. (0) | 2014.06.25 |
[C 예제] 파일 입출력을 이용해 연산결과 저장하기. (0) | 2014.06.24 |