묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
0.1F + 0.1F 에서 오차가 나는 이유
부동소수점 오차 관련하여 질문이 있습니다.부동소수점 방식에서 순환소수를 표현할 때는 오차가 난다는 것을 이해하였습니다.하지만 0.1은 순환소수가 아니어서 부동소수점 방식으로도 정확하게 표현할 수 있는데, 강의에서처럼 오차가 나는 이유가 무엇인가요?
-
해결됨독하게 되새기는 C 프로그래밍
C언어 부동소수점 오차 관련해서 실제 실무적으로 해결하셨던 방법이 있을까요?
안녕하세요. C언어로 개발을 하고 있는 왕초보 개발자입니다.최근 부동소수점 관련해서 문제에 직면하게 되어서 C언어 개발자 분들은 혹시 실무적으로 어떻게 해결하셨는지 궁금합니다.제가 맡은 프로그램은 예전에는 해당 값이 소수점이 발생할 일이 없어서 인지 부동소수점 문제점 까지 크게 고려하지 않고 작성된 것으로 보입니다. 그리고 이전 개발자들도 다 퇴사하여 없고 저 혼자 해당 프로그램을 맡아 주변에 물어볼 곳 없어 여기에 질문하게 되었습니다ㅠㅠ문제점에 대해 간단히 말씀 드리면... 두서없이 급하게 작성해서 코드와 문제점이 발생했던 숫자는 정확하지 않을 수 있습니다.double a,b,c,d;a = 17772.8;b = 2338.2;c = modf(a+b, &d);a+b값이 20111 가 나오거나 아니면 오차로 더 큰 수면 그나마 다행이겠지만...modf 함수를 사용하여 실수부만 사용하고 있습니다.실제로 합산 값을 찍어보니 부동소수점 문제가 발생해서 20110.99999999 값을 갖고 있어서소수 부분 제거 후 20110 의 값만 남게 되어서 값이 정확하지 않아 문제가 발생했습니다.관련해서 해결해보신분 ㅠㅠㅠㅠ 도움주시면 정말 감사하겠습니다.
-
해결됨홍정모의 따라하며 배우는 C언어
부동소수점
부동소수점 32bit 중에서 exponent 를 표현하는 8bit를 signed 와 unsigned 로 모두 표현 가능하다고 하셨는데요. signed 일 때 -127~127이 되고 unsigned 일 때 -127 ~ 128이 되는데 맞나요? 11111111 = 255 255-127 = 128 그럼 signed일 때와 unsigned일 때 범위가 다르네요??