2014-04-13 5 views
0

나는 Xlib 헤더를 사용하여 프로그램을 작성했습니다. 이것의 일부입니다.변수를 float로 선언했지만 출력은 정수로 나타납니다.

XPoint m[5]; 

m[0].x = 0; m[0].y = 400; 
m[1].x = 150; m[1].y = 250; 
m[2].x = 250; m[2].y = 300; 
m[3].x = 300; m[3].y = 200; 
m[4].x = 450; m[4].y = 400; 

float slope=(m[2].y-m[1].y)/(m[2].x-m[1].x); cout<<slope<<endl; 

기울기는 0.5 여야하지만 0을 제공합니다. 이유와 올바른 방법을 설명해주세요. 그것은 XPoint 때문입니까 ?? 도움말 크게 감사드립니다.

+1

은'XPoint'있는 정수의 구성원 경우에, 당신은 정수 연산을하고있다 결과를 지정하는 유형에 관계없이 –

답변

0

회원 인 xy은 정수형이므로이 나누기는 정수로 수행됩니다. 정수는 결과의 소수 부분을 자릅니다. 즉 50/1000.5은 출력물에 표시되는 0으로 잘립니다. 이를 방지하기 위해,이 같은 부동 소수점 값을 피연산자 중 하나를 던져 필요

:

float slope = static_cast<float>(m[2].y-m[1].y)/(m[2].x-m[1].x); 
+0

그것은 작동합니다 ... 정말 고마워요 .. –

+0

@ user3518182 당신은 천만에. 내 대답이 마음에 들면 투표를하거나 받아 들일 수 있습니다. – blackbird