ここに...理解に私のコードからの抜粋ですありません。..フロート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
私はCプログラマではないんだけど、私はそれが(使用されている変数による)最初の整数演算を行い、結果を詰め込むかなり確信していますフロート内にある。他の変数を浮動小数点として定義する必要があります。 –
なぜ「toprightx、bottomrightx」が違うのですか? 'toprightx'が少ない場合は、 'topleftx' [または単に 'left']にするべきではありませんか? – Random832