Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- win32
- 포트폴리오
- 별찍기
- linux
- 유료강좌
- 도움말
- 실습
- do it c
- 미가공
- ListBox
- 김성엽
- MFC 예제
- 충무창업큐브
- mfc 실습
- Time
- 마이크로소프트
- Tipsware
- MFC
- tips강좌
- C
- SSG
- C++
- 핵심 요약
- MyTread
- 정보처리기사
- visual
- MyThread
- 정처기 독학
- C언어
- mysql
Archives
- Today
- Total
History
[c언어] 소숫점 반올림(첫째, 둘째... 자리) 본문
728x90
반응형
c언어에서는 올림(ceil)과 내림(floor) 함수는 지원하지만 반올림 함수는 따로 지원하지 않는다.
ceil과 floor함수는 math.h를 include 해줘야 사용할 수 있는 라이브러리 함수이다.
float data1=1.75452;
float data2=0.1353;
위처럼 float형 data1과 data2라는 변수를 선언하고 초기화한다.
data1을 기준으로 ceil을 사용하면 2.000000이 나올 것이고 floor을 하면 1.000000이 나온다.
난 floor을 활용하여 반올림을 간단하게 구현해보도록 하겠다.
#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)
int main()
{
float data1=1.75452;
float data2=0.1353;
data1 = floor(data1 + 0.5);
data2 = floor(data2 + 0.5);
printf("소수 반올림\n");
printf("data1: %.3f\ndata2: %.3f\n", data1, data2);
return 0;
}
위와 같이 코드를 작성하면 0.5를 더한 후 내림을 진행하기 때문에 기존 소수점이 반올림 기준 (0.5 이상)이 되면 정수 부분이 바뀔 것이다.
그러면 소숫점 1번째 자리에서 반올림을 하는 방법은 어떻게 해야 할까?
방법은 아래와 같다.
#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)
int main()
{
float data1=1.75452;
float data2=0.1353;
data1 = floor(data1 + 0.5);
data2 = floor(data2 + 0.5);
printf("소수 반올림\n");
printf("data1: %.3f\ndata2: %.3f\n", data1, data2);
data1 = 1.75452;
data2 = 0.1353;
data1 = (floor((data1 * 10) + 0.5)) / 10;
//계산과정: 17.5452+0.5= 18.0452 ->(floor)내림->18.000 /10= 1.800
data2 = floor(((data2 * 10) + 0.5)) / 10;
//계산과정: 1.353+0.5= 1.853->(floor)내림->1.000 /10= 0.100
printf("소수 첫째자리 반올림\n");
printf("data1: %.3f\ndata2: %.3f\n", data1, data2);
return 0;
}
주석처럼 계산과정을 거친 후 floor을 통해 내림을 진행하면 원하는 값이 나온다.
마지막으로 소숫점 2번째 자리에서 반올림을진행해 보겠다. 코드는 아래와 같다.
#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)
int main()
{
float data1=1.75452;
float data2=0.1353;
data1 = floor(data1 + 0.5);
data2 = floor(data2 + 0.5);
printf("소수 반올림\n");
printf("data1: %.3f\ndata2: %.3f\n", data1, data2);
data1 = 1.75452;
data2 = 0.1353;
data1 = (floor((data1 * 10) + 0.5)) / 10;
data2 = floor(((data2 * 10) + 0.5)) / 10;
printf("소수 첫째자리 반올림\n");
printf("data1: %.3f\ndata2: %.3f\n", data1, data2);
data1 = 1.75452;
data2 = 0.1353;
data1 = (floor((data1 * 100) + 0.5)) / 100;
//계산과정: 175.452+0.5= 175.952 ->(floor)내림-> 175.000 /100= 1.750
data2 = floor(((data2 * 100) + 0.5)) / 100;
//계산과정: 13.53+0.5= 14.03 ->(floor)내림->14.00 /10= 1.400
printf("소수 둘째자리 반올림\n");
printf("data1: %.3f\ndata2: %.3f\n", data1, data2);
return 0;
}
아래는 실행화면이다. 결과값이 수기로 계산한 값과 동일하게 출력이 되었다.
728x90
반응형
'C,C++ > 개념 실습 프로그래밍' 카테고리의 다른 글
[C언어] assert 함수 (2) | 2023.11.14 |
---|---|
[c++] STL에 관한 기초 개념 (0) | 2023.06.03 |
[C++] 템플릿(template)에 대하여 step2 (2) | 2023.06.01 |
[C++] 템플릿(template)에 대하여 step1 (0) | 2023.05.16 |
[C언어] 파일에 저장된 문자열 수정하기 (0) | 2023.04.26 |
Comments