출처: https://bbs.ruliweb.com/community/board/300143/read/46996037
#include
int main()
{
float num1 = 0.0f;
float num2 = 0.1f;
// 0.1을 10번 더함
for (int i = 0; i < 10; i++)
{
num1 = num1 + num2;
}
printf("%.15f\n", num1);
return 0;
}
해당 코드는 num1 = 0에 num2 = 0.1을 10번 반복해 더하게 만든 C언어 코드다.
즉 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 의 답을 묻는 코드.
인간이라면 누구나 1이 답인걸 알 수 있다.
분명 0.1을 10번 더했으므로 1.0이 나와야 하는데 1.000000119209290이 나왔다.
(궁금한 사람은 C언어 컴파일러라고 구글에 검색해서 그 사이트에 저걸 그대로 넣고 돌려보자. 동일한 답이 나온다.)
수학적으로 실수는 무한히 많은데 이 실수를 유한 개의 비트(컴퓨터의 연산 단위)로 표현하기 위해서는 근사값으로 표현해야 하기 때문.
이런 문제를 부동소수점 반올림 오차(rounding error)라고 칭한다.
36개의 댓글
무분별한 사용은 차단될 수 있습니다.
제목 | 글쓴이 | 추천 수 | 날짜 |
---|---|---|---|
국힙원탑 근황 | 이게뭐하는짓이고 | 2 | 1 분 전 |
직장내 괴롭힘 때문에 힘든 개붕이 3 | Johndoe | 1 | 1 분 전 |
일본에서 15년 넘게 산 사람이 처음 들어본다는 일본 명소.jpg 7 | 렉카휴업 | 1 | 2 분 전 |
임영웅이 임영웅했다…어버이날 팬클럽 이름으로 2억 통큰 기부 | ltearl | 1 | 2 분 전 |
ㅇㅎ) 차를 덮친 스파이더 걸 2 | Radian88 | 0 | 2 분 전 |
게이라서 힘든 점.jpg | 뭐라해야하냐 | 0 | 2 분 전 |
고딩한테 보조 부탁했다가 강제로 더 들게 된 누나 ㅋㅋ 4 | 나카무라카즈하 | 4 | 3 분 전 |
ㅇㅎ) 스파이더 걸 코스프레 단점 5 | Radian88 | 3 | 4 분 전 |
만원짜리 수육 백반 7 | 추천요정이여름 | 4 | 4 분 전 |
국힙원탑 뷰티풀너드 본체 벌스&훅 모음.mp4 5 | 전통원조병맛 | 7 | 5 분 전 |
충격적인 스토커들의 마인드 1 | IlllIIIllIIl | 0 | 6 분 전 |
"진료 끝났어요" 간호사 말에 흉기로 수차례 찌른 ... 3 | nijvfdnivfre | 3 | 6 분 전 |
래퍼면 랩으로 하라고? jpg 6 | 이세카이 | 5 | 7 분 전 |
내! 니가 개가 되라고 한다면 내 개가 된다!! | Johndoe | 1 | 8 분 전 |
이거 왜 추하질않고 비트가들리냐 6 | 일지남 | 1 | 11 분 전 |
"제발 살려주십쇼!!" 보다 성공률 높은 방법 2 | Johndoe | 2 | 11 분 전 |
소리ㅇ)) 개그계의 한 획을 그은 분장 ㅋㅋㅋㅋ 2 | 임창정 | 5 | 12 분 전 |
유튜브 들킨 8급공무원.jpg 5 | 바이럴시닌자딸치... | 8 | 12 분 전 |
개붕이들을 위한 피부염 없애는법 1 | 참치라떼 | 2 | 12 분 전 |
조신한 스타일 아나운서.jpg 1 | 붕따기 | 2 | 12 분 전 |
otp123
double 씁시다
낚시뀬
ㄹㅇ 본인이 실수한거면서 컴퓨터 탓을 하네
찰진찹쌀떡
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이거맞지 ㅋㅋㅋ
인생걸고컨셉질
오 완벽히 이해했어
홀리안
소수점규칙을 정해두고 계산을 하지 않은 개발자의 실수입니다 선생님
진짜병신
환상수첩
이건 사람 잘못이자너...
Aspwidnc
프로세스
int main()
{ printf("ㅋㅋ");
}
성찰하는뱁새
ㅋㅋㅋㅋㅋ실제로 존재하냐 이렇게 쓰는 사람이?
개또라이
오류 아니냐
void main 으로 해야지
아니면return 0를 주던가
나는요
그게 왜 충이냐 학원에서도 내려쓰는걸로 배웠고 책에도 내려쓰고 현업 친구들도 다 내려쓴다 가독성 좋다고
찹쌀꽈배기
나는요
아니 ㅋㅌㅋㅋ설명을해달라 그렇게 써놓으면 누가 납득을해
사다리연산자
내려쓰기가 근ㅡㅡ본 아니었냐?
breedy
너무 옛날스타일 아니냐
지산역
라기 보다는 float이라는 실수는 소수점 6째자리까지 쓰이는 하나의 변수라서 그럼 뒤에 숫자는 필요가 없는 숫자라서 그럼
도희
컴붕이 존나많은데 ㅋㅋ 곧 ㅂㅁ받고 내려가겠네
성찰하는뱁새
C 처음 배운 공대생이 올렸나 보네
13만원렌즈잃어버림
팜코코
https://www.youtube.com/watch?v=vOO-oLS0H68
그 야동관리앱 만든 애가 설명해놓은거
이게치킨이지
float num2 = 0.1f; ----> 여기서 f는 왜 붙는거임? 플로트라고 표시해주는거야?
메모장켜는습관들이기
ㅇㅇ
이게치킨이지
ㅇㅎ ㄳㄳ
흑기
ㅇㅇ
이게치킨이지
곰아워요
리스코프
파이썬에선 알아해준다구 ㅋㅋ
미네카르
그래서 자바에선 저럴때 BigDecimal 쓰는데
빅스비
컴퓨터는 실수 안함 ㅋㅋ
빠빠양
더블 써
그거나아님
컴공 나와서 전기기사 따고 이쪽일한다. 너희도 도망쳐!
주작무새
정석이네
앙기무띠리따리
NULL도 프린트하면 더미 값을 던져준다구!
수리리리누
프로그래밍은 맘먹으면 2,3 개월이면 배워서
별로 대단해보이진 않음
최대전단응력
무의미한 오차 아녀?
번째사랑은너야
애초에 float은 유효자리수 7개짜리라 맞게 잘 한 놈을 억지로 틀리다고 한 수준