oh20020409   2년 전

total 의 자료형을 long long으로 바꾸면,

답이 틀리게 나옵니다. 

나눗셈이 이상하게 계산 된 것 같은데요. 

'double'에서 '__int64'(으)로 변환하면서 데이터가 손실될 수 있습니다. 혹시 이것과 관련이 있는것인지?

왜 틀렸는지 알려주시면 감사하겠습니다.

oh20020409   2년 전

자답합니다.

round 함수를 쓰기전에,

미리 round 함수의 인자에 total/2를 전달 한다면 정수 끼리의 연산이므로

total/2의 결과는 소수점이 버려지게되며,

이는 round 함수를 쓰는 의미가 없어집니다. 소수점 아래가 존재하지 않기 때문입니다.

그래서 total을 미리 double로 형변환 시키고 계산하면됩니다. 아래와 같이

round((double)total/2)

댓글을 작성하려면 로그인해야 합니다.