티스토리 뷰
728x90
// 쉽게 풀어쓴 C언어 Express p.187 참고
컴퓨터의 한정된 비트로 실수를 표현하면 오차가 발생한다.
실수를 표현하는 방식인 부동 소수점은 유효숫자의 개수에 제한을 가지기 때문에 아주 큰 수와 아주 작은 수를 더하면, 작은 수가 사라지기도 한다.
예를 들어 아래의 수식은 양쪽의 값이 같은 것으로 간주되어 거짓이 될 수 있다.
(1e32+0.01) > 1e32
그 이유는 다음과 같다. double형의 유효숫자는 16자리인데, 1e32+0.01 같은 수를 마지막 자리까지 가지고 있으려면 30자리가 넘는 유효숫자가 있어야 한다.
따라서 실수값을 올바르게 비교하려면 다음과 같이 비교해야 한다.
(fabs(x-y) < 0.0001)
fabs()는 실수값의 절대값을 구하는 함수이다.
// 쉽게 풀어쓴 C언어 Express p.187 참고
부동소수점 수 2개가 같은지를 확인하고 싶을 때
if ( x == y ) { ... }
위와 같은 비교는 문제가 될 수 있으므로, 다음과 같이 오차를 감안하여 비교해야 한다.
if (fabs(x-y) < 0.00001) { ... }
2개의 숫자가 오차 이내로 아주 근접하면 같은 것으로 판정하는 방법이다.
728x90
'알아두면 쓸데 있는 > 코딩 지식' 카테고리의 다른 글
C언어 - 난수 생성하기 rand() (0) | 2023.02.03 |
---|---|
C언어 - 키보드가 눌렸는지 검사하기 _kbhit() (0) | 2023.02.03 |
유효한 삼각형 검사 (0) | 2023.02.02 |
루트 값 구하기 sqrt() (0) | 2023.02.02 |
윤년의 조건 (0) | 2023.02.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- x.y.z (메이저.마이너.패치)
- Collections
- 원시값(primitive)
- named export vs default export
- 소프트웨어 버전 관리
- 중첩 함수(nested function)
- chrome extension 자동 배포
- json.parse(json.stringify())
- structuredclone()
- react
- stdlib.h
- useEffect
- 프로세스 강제 종료
- 시맨틱 버전(semantic versioning
- jackson 라이브러리
- math.h
- Jest
- public vs assets
- defaultdict
- pwa(progressive web app)
- styled-components
- javascript 필수 문법
- 실행 중인 프로세스 확인
- ajax (asynchronous javascript and xml)
- inp
- counter
- react router
- core web vitals
- 쉽게 풀어쓴 C언어 Express
- semver)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함