int 유형의 두 변수가있는 프로그램이 있습니다. (6 소수점으로 인쇄 할 때 0.000001 의해) 제의 printf 작성된할당과 인쇄 사이의 다른 반올림
int num;
int other_num;
/* change the values of num and other_num with conditional increments */
printf ("result = %f\n", (float) num/other_num);
float r = (float) num/other_num;
printf ("result = %f\n", r);
값은 두 번째의 printf 의해 작성된 값과 다르다.
는 분할 전에, 값은 다음과 같습니다
num = 10201
other_num = 2282
나는 15 소수점 이하 자릿수로 결과 번호를 인쇄했습니다. 그 수는 7 번째 소수점에서 갈라져 6 번째 차이점을 설명합니다. 여기
15 소수점 이하 자릿수로 숫자 :4.470201577563540
4.470201492309570
나는 점 반올림 문제를 떠 알고 있어요,하지만 과제에와의 printf에서 수행 할 때 나는 동일하게 계산 된 결과를 기다리고 있었다 논의.
왜 이러한 기대가 잘못 되었습니까?
감사합니다.
방금 만든 테스트에서 일치합니다. 'num'과'other_num'의 값은 무엇입니까? 어떤 환경을 사용하고 있습니까 (호스트 아키텍처, 컴파일러 버전 등)? –
나는 질문을 편집하고 숫자를 제공했다. 감사. – MyNameIsZero