WA

justinb Reply 3 years 44 weeks ago
discuss에서 제시해주신 1 -4 -5 10 -7 -3 8를 대입해봤는데.... 94가 나와서 원인을 찾던중 dotnum(10,-7,-3,8)부분에서 i=-3일때 integer(((d - b) / (c - a)) * (i - a) + b)이부분의 값이 0이 아닌, 1로 출력된다는 사실을 알게되었습니다...printf("%d",(int)((((double)-15) / ((double)13)*((double)-3 - (double)10)) + (double)-7));의 결과가 8이 아닌, 7로 나오기 때문이었는데요... 7이 나오는 이유가 무엇인지가 궁금합니다.
withcs2 Reply 3 years 44 weeks ago
컴퓨터는 이진법을 사용하므로 10진수 소수를 완벽하게 나타내지 못합니다 double로 계산할 때는 끝까지 double로 계산하는게 좋아요. 보다 정확한 계산을 원한다면 long double을 활용할 수 있습니다.