1. 강의를 보면 16행에 result_d = (float) x / y;로해서 하면 결과값이 예시처럼 나오는데 이게 정수형 / 정수형에서 x부분을 실수형으로 바꿔서 실수형 / 정수형 형태로 바꿔서 결과값이 버림으로 안되게 하는건가요?? result_d = x / (float)y 도 값이 같아서 궁금합니다.
==> 네 그렇습니다. 정수형/ 정수형에서 x부분을 실수형으로 바꿔서, 즉 실수형 / 정수형 형태로 바꿔서 결과값이 실수형(반올림의 결과값)으로 나오게 하기 위함입니다.
값을 실수형으로 나타나게 하기 위해서 강제형변환인 (float)을 x나 y 중에서 사용을 했습니다.
사용하신 것처럼 "result_d = x / (float)y;" 사용해도 결과는 같습니다.
정수/실수 = 실수, 실수/정수=실수, 실수/실수=실수
2개중에서 하나만 실수형의 값이 들어가게 되면 결과는 실수형의 값이 반환 됩니다.
2. 그리고 17행을 printf("%f / %f = %.2f\n",(float)x,(float)y,result_d); 로 바꿔봤는데 결과값이 8.000000 / 3.000000 = 2.00 으로 나오는데 이건 왜 버림처리 된건지 궁금합니다.( result_d = x / y에서 이미 정수 / 정수 형태로 계산결과값이 나와서 결과값 result_d = 2.00이 되는거고 x와 y만 실수형으로 표시가 되는건가요?)
==> 네 그렇습니다. 이미 정답을 알고 계시네요.
출력문의 경우 단순히 결과를 출력해 주는 것입니다.
result_d = x / y; ==> 라고 코드를 작성했다면 2라는 값이 실수형 result_d에 담기게 되고 따라서 %.2f라고 변환명세를 표시했기에 "2.00" 이 출력 됩니다.
(즉 정수형/정수형으로 계산이 되었기 때문에 "2"의 결과값이 반환되고 이를 실수형 변수인 result_d에 "2.000000"으로 저장을 하게 됩니다. )