내가 이것에 대해 매우 혼란 스러워요 이유는 ... 여기 내 코드에서 추출이 이해가 안 ..수레는 C에서 반올림되고 ++ 및
float m = 0.0, c = 0.0;
printf("toprightx = %d bottomrightx = %d toprighty = %d bottomrighty = %d\n",
toprightx, bottomrightx, toprighty, bottomrighty);
// find m and c for symmetry line
if (toprightx == bottomrightx) {
m = (-toprighty + bottomrighty);
}
else {
m = (-toprighty + bottomrighty)/(toprightx - bottomrightx);
}
c = -toprighty - (m * toprightx);
printf("m = %f and c = %f\n", m, c);
을 그리고 여기에 출력됩니다 :
toprightx = 241 bottomrightx = 279 toprighty = 174 bottomrighty = 321
m = -3.000000 and c = 549.000000
왜 출력이 반올림됩니까? 나는 왜 코드가 정수를 반환하는지 이해하지 못하기 때문에 그것들을 수레라고 선언했다. m의 올바른 값은 -3.8684이어야합니다.
(즉 toprightx, bottomrightx, toprighty, bottomrighty 주 더 코드의 최대 정수로 선언되었다.) C++ 그들을 위해 정수 계산을 사용합니다, 그래서 당신이 당신의 계산에만 INT의의를 사용하고 있기 때문이다
클래식 ........ – Mehrdad
을하고 결과를 거즈 : 대신 시도 부유물에. 다른 변수를 수레로 정의해야합니다. –
'toprightx, bottomrightx'가 다른 이유는 무엇입니까? 'toprightx'가 적다면 'topleftx'[아니면 그냥 'left']가되어서는 안됩니까? – Random832