반응형
프로그램은 함수의 집합으로 이루어져 있다고 볼 수 있습니다.
C 언어를 처음 배우시거나 다시 익히는 분들을 위해 일반적인 해결 방법(main 함수에 포함)과 어떤 알고리즘으로 동작하는지, 기능을 쉽게 파악하기 위해 함수로 분리한 방법 2가지로 구현하였으니 참고하시면 될 것 같습니다.
실수의 소수점을 추출해서 정수형 변수에 대입하는 프로그램 |
임의의 실수는 소수점을 가지고 있죠. 12.3456이라는 값은 정수부 12와 소수부 3456으로 나뉜다고 볼 수 있습니다.
이때, 3456 부분을 정수형 변수로 받아서 처리해야 되는 프로그램이 있습니다. 그 알고리즘을 구현해 보려고 합니다.
예제 프로그램이므로, 편의성 소수점 2자리까지만 정수로 추출하는 것으로 하겠습니다. 12.3456을 예로 들면, 34라는 정수 값을 추출하는 거죠.
입력은 C11 표준에 있는 scanf_s() 함수를 사용하였습니다.
1. 코드 및 설명(main 함수에 포함) |
//==========================================================================
/**
* @brief 소수점 이하 2자리를 정수로 출력하는 프로그램
* @remark 임의의 실수에서 소수점 이하 두자리수만 추출하여
정수형 변수에 대입하라.
예를 들어 사용자로부터 입력받은 실수 f가 12.3456이라면
34만 추출한다. 이때 반올림은 고려하지 않아도 상관없다.
*///========================================================================
#include <stdio.h>
int main(void)
{
double nRealNum = 0;
int nRet = 0;
printf("실수를 입력하세요 : ");
scanf_s("%lf", &nRealNum);
if (nRealNum < 0)
{
nRealNum = -nRealNum;
}
nRealNum *= 100;
nRet = (int)nRealNum % 100;
printf("결과 : %d\n", nRet);
return 0;
}
C언어에서 실수형 데이터를 정수형 데이터로 형 변환하는 특징을 이해하기 좋은 예제로 볼 수 있겠네요.
12.3456의 데이터에 100을 곱하면, 1234.56이 되고, 100으로 나눈 나머지의 정수 값은 34가 되는 거죠.
추가적인 부분은 음수일 때, 양수로 바꿔주어 곱하거나 나머지 계산 시, 의도하지 않은 동작을 방지하는 부분입니다.
2. 코드 확인(함수 구현) |
#include <stdio.h>
//==========================================================================
/**
* @brief 소수점 이하 2자리를 정수로 출력하는 함수
* @remark 임의의 실수에서 소수점 이하 두자리수만 추출하여
정수형 변수에 대입하라.
예를 들어 사용자로부터 입력받은 실수 f가 12.3456이라면
34만 추출한다. 이때 반올림은 고려하지 않아도 상관없다.
* @param double dRealNum : [IN] 소수점 이하 추출할 실수 값
* @return int : 반환할 소수점 이하 2자리 정수 값
*///========================================================================
int DecimalPointToInt(double dRealNum)
{
int nRet = 0;
if (dRealNum < 0)
{
dRealNum = -dRealNum;
}
dRealNum *= 100;
nRet = (int)dRealNum % 100;
return nRet;
}
//==========================================================================
/**
* @brief Entry 함수(main)
* @return int
*///========================================================================
int main(void)
{
double fRealNum = 0;
int nRet = 0;
printf("실수를 입력하세요 : ");
scanf_s("%lf", &fRealNum);
nRet = DecimalPointToInt(fRealNum);
printf("결과 : %d\n", nRet);
return 0;
}
반응형
'프로그래밍 언어 > C' 카테고리의 다른 글
[C Console] 윤년을 고려하여, 내일의 날짜를 출력하는 프로그램 (1) | 2019.06.03 |
---|---|
[C Console] 시그마 팩토리얼 수식 계산 프로그램(재귀, 이중 for문, 단일 for문) (0) | 2019.05.21 |
[C언어 연습문제]강좌 19. Variadic functions in C(가변인자 함수 구현법) (0) | 2019.05.17 |
[C언어 연습문제]강좌 18. Permutations of Strings(문자열 순열 표시 - next_permutation 직접 구현) (0) | 2019.05.14 |
[C언어 연습문제]강좌 17. Sorting Array of Strings(함수포인터 활용) (0) | 2019.05.06 |