유저 개드립

즐겨찾기
최근 방문 게시판

컴퓨터에게 간단한 덧셈을 실수하게 만들어보자

출처: https://bbs.ruliweb.com/community/board/300143/read/46996037

 

1.png

 

 


#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)라고 칭한다.

 

 

 

 

 

2.png

 

 

 

36개의 댓글

2020.08.09

double 씁시다

1
2020.08.09
@otp123

ㄹㅇ 본인이 실수한거면서 컴퓨터 탓을 하네

1
2020.08.09
@otp123

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이거맞지 ㅋㅋㅋ

0

오 완벽히 이해했어

0
2020.08.09

소수점규칙을 정해두고 계산을 하지 않은 개발자의 실수입니다 선생님

2
2020.08.09
1
2020.08.09

이건 사람 잘못이자너...

0
2020.08.09
[삭제 되었습니다]
2020.08.09
@Aspwidnc

 

int main()

{ printf("ㅋㅋ");

}

1
2020.08.09
@프로세스

ㅋㅋㅋㅋㅋ실제로 존재하냐 이렇게 쓰는 사람이?

0
2020.08.09
@프로세스

오류 아니냐

void main 으로 해야지

아니면return 0를 주던가

0
2020.08.09
@Aspwidnc

그게 왜 충이냐 학원에서도 내려쓰는걸로 배웠고 책에도 내려쓰고 현업 친구들도 다 내려쓴다 가독성 좋다고

0
2020.08.09
@나는요
[삭제 되었습니다]
2020.08.09
@찹쌀꽈배기

아니 ㅋㅌㅋㅋ설명을해달라 그렇게 써놓으면 누가 납득을해

1
2020.08.09
@Aspwidnc

내려쓰기가 근ㅡㅡ본 아니었냐?

0
2020.08.09
@Aspwidnc

너무 옛날스타일 아니냐

0
2020.08.09

라기 보다는 float이라는 실수는 소수점 6째자리까지 쓰이는 하나의 변수라서 그럼 뒤에 숫자는 필요가 없는 숫자라서 그럼

0
2020.08.09

컴붕이 존나많은데 ㅋㅋ 곧 ㅂㅁ받고 내려가겠네

0
2020.08.09

C 처음 배운 공대생이 올렸나 보네

0
2020.08.09

https://www.youtube.com/watch?v=vOO-oLS0H68

그 야동관리앱 만든 애가 설명해놓은거

0
2020.08.09

float num2 = 0.1f; ----> 여기서 f는 왜 붙는거임? 플로트라고 표시해주는거야?

0
@이게치킨이지

ㅇㅇ

0
2020.08.09
@메모장켜는습관들이기

ㅇㅎ ㄳㄳ

0
2020.08.09
@이게치킨이지

ㅇㅇ

0
2020.08.09
@흑기

곰아워요

0
2020.08.09

파이썬에선 알아해준다구 ㅋㅋ

0
2020.08.09

그래서 자바에선 저럴때 BigDecimal 쓰는데

0
2020.08.09

컴퓨터는 실수 안함 ㅋㅋ

0
2020.08.09

더블 써

0
2020.08.09

컴공 나와서 전기기사 따고 이쪽일한다. 너희도 도망쳐!

0
2020.08.09
@그거나아님

정석이네

0

NULL도 프린트하면 더미 값을 던져준다구!

0
2020.08.09

프로그래밍은 맘먹으면 2,3 개월이면 배워서

 

별로 대단해보이진 않음

0
2020.08.09

무의미한 오차 아녀?

0

애초에 float은 유효자리수 7개짜리라 맞게 잘 한 놈을 억지로 틀리다고 한 수준

0
무분별한 사용은 차단될 수 있습니다.
제목 글쓴이 추천 수 날짜
국힙원탑 근황 이게뭐하는짓이고 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 분 전