컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, March 28, 2007

C언어] 나누기 소수점 나오게 나눗셈; Divide, int float, Decimal Point


컴퓨터에서는 슬래쉬(/) 기호로 나눗셈을 하고, 별표(*)로 곱셈을 합니다. C에서도 마찬가지입니다.

그런데 정수를 나눗셈하면 결과가 실수(float)가 되는 경우, 즉 소수점이 나오는 경우가 많습니다. C언어는 자료형이 엄격하기 때문에, 정수 나눗셈은 다음 예제와 같이 해주어야 합니다.

C언어 기초 예제: 정수 나눗셈


소스 파일명: example.cpp
#include <stdio.h>

int main(void) {

  // 정수 나눗셈의 정확한 결과를 구하려면
  // 정수를 (double) 로 캐스팅하여 실수로 만들어 주어야 함
  int x = 100;
  int y = 3;

  printf("%f\n", (double) x / (double) y);
  // 출력 결과: 33.333333




  // 더 좋은 방법은, 처음부터
  // 변수를 실수형(double)으로 선언하고
  // 상수도 100.0 이렇게 끝에 ".0"을 붙여 실수화하는 것입니다.
  double x2 = 100.0;
  double y2 = 3.0;

  printf("%f\n", x2 / y2);
  // 출력 결과: 33.333333


  return 0;
}



참고: ▶▶ floating point not loaded




tag: cpp
C언어 | C/C++ (Visual C++) 프로그래밍

2 Comments:
At November 10, 2009 at 5:25 AM, Blogger 허허로 said...

약간 잘못 알고 계시는 것이 인는듯하여 공부하러 들어왔다가 댓글 하나 남기고 감니다.

레몬향기혜성님께서는
------------------------------
// 상수도 100.0 이렇게 끝에 ".0"을 붙여 실수화하는 것입니다.
double x2 = 100.0;
double y2 = 3.0;
-------------------------------
이렇한 예문을 제시 하셨는데 제가 터보c를 안배운지 10년이 넘어서 약간 가물가물거리지만 약간 아니라는 생각이 들어서 다음과 같이 해 보았는데 같은 결과가 나오네요. 그리고 제가 배운기억으로는 상수 끝에 .(소숫점)을 붙이는 것은 이런경우에 붙이는 것이 아니라 상수로만 계산시에 붙이는 것이라고 알고 있습니다.
즉,
-------------------------
int x=100 ;

printf("result: %f \n", x/30.0)

------------------------
과 같은 경우에만 사용을 한다고 배운것 같네요.

여기서는 한글을 댓글달기가 참 어렵네요. 영어는 자동스크롤이 되어 입력이 편한데 한글은 글자를 쓰는 위치가 자동스크롤링도 안되고 더군다나 글씨를 쓸때마다 스크롤링 위치가 변하네요.

그래서 FULL 소스를 보실려면 제 카페로 오세요.

http://cafe.naver.com/togetherall/1409

 
At November 10, 2009 at 12:19 PM, Blogger mwultong said...

위의 C소스는 16비트 터보C가 아니라, 32비트 비주얼C를 기준으로 작성했습니다. C의 그런 미묘한 부분은 컴파일러마다 약간 차이가 있을 것입니다.

또한 100.0 이런 것은 엄밀한 의미의 '상수'가 아니라 '리터럴'이라고 하는데 진짜 상수와는 차이가 있습니다.

그리고 미국 서비스라서 한글 입력에 많은 문제가 있습니다. 죄송하게 생각합니다.

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top