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 | 31 |
Tags
- JavaScript
- 인프런
- 따라하며 배우는 C언어
- BFS
- udemy
- programmers
- 따배씨
- server
- 정수론
- 따라하면서 배우는 C언어
- web
- Algospot
- String
- BASIC
- Cleancode
- graph
- C언어
- 종만북
- DP
- 생활코딩
- greedy
- C
- Math
- dfs
- sorting
- 백준
- Algorithm
- php
- Python
- BOJ
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 3.12 부동소수점형의 한계 본문
따배씨 - 따라하며 배우는 C언어
3강 데이터와 C 언어
3.12 부동소수점형의 한계
#include <stdio.h>
#include <float.h>
#include <math.h>
int main()
{
// round-off errors (ex1) - 너무 큰숫자와 상대적으로 작은 숫자의 합의 계산이 되지 않음
float a, b;
a = 1.0E20f + 1.0f;
b = a - 1.0E20f;
printf("%f\n", b); // 0.000000
// round-off errors (ex2) - 2진수를 사용하는 부동 소수점 표현법에서는 0.01 을 표기 하지 못함
float c = 0.0f;
for (int i = 0 ; i < 100; i++){
c = c + 0.01f;
}
printf("%f\n", c); // 0.999999
// overflow
float max = 3.042823466e+38f;
printf("%f\n", max);
max = max * 100.0f;
printf("%f\n", max); // inf 출력, infinite: 표현 할 수 없는 큰 숫자
// underflow
float min = 1.401298464e-45f;
printf("%e\n", min);
min = min / 2.0f;
printf("%e\n", min); // 0.000000e+00 출력, subnormal: 부동 소숫점 형의 정밀도로 표현할수 없는 작은 숫자
float f = 104.0f;
f = f/0.0f;
printf("%f\n", f); // inf 출력
f = asinf(2.0f); // arc sin
printf("%f\n", f); // nan 출력, Not A Number: 수학적으로 존재하지 않는 값
return 0;
}
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
http://blog.naver.com/atelierjpro
http://www.inflearn.com/course/following-c
'Language > C' 카테고리의 다른 글
[따배씨] 4.1 문자열 입출력 하기 (0) | 2021.05.12 |
---|---|
[따배씨] 3.13 불리언형 ~ 3.14 복소수형 (0) | 2021.05.11 |
[따배씨] 3.11 부동소수점형 (0) | 2021.05.11 |
[따배씨] 3.10 문자형 (0) | 2021.05.11 |
[따배씨] 3.9 이식성이 높은 고정 너비 정수 (0) | 2021.05.11 |
Comments