以下の値はfhr_1
0.0 として計算されます なぜfhr_1
0.3 ではないのですか?
double fhr_1;
int n_fhr_1 = 9;
int n_fhr_0 = 15;
int n_fhr_2 = 6;
fhr_1 = n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
double
タイプのオペランドが少なくとも 1 つ必要です。そうしないと、整数の結果が得られます(整数除算が発生します)
fhr_1 = (double)n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
または
fhr_1 = n_fhr_1/(double)(n_fhr_1 + n_fhr_0 + n_fhr_2);
または
fhr_1 = n_fhr_1 / ((double)n_fhr_1 + n_fhr_0 + n_fhr_2);
msdnで除算規則の詳細を読むことができます。
double fhr_1;
int n_fhr_1 = 9;
int n_fhr_0 = 15;
int n_fhr_2 = 6;
fhr_1 = (double)n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
オペランドの 1 つを double にキャストする必要があります。これにより、double として計算されます。
単純に整数を分割することはできません。丸めのために 0 になります。代わりに試してください:
fhr_1 = ((double)(n_fhr_1))/(n_fhr_1 + n_fhr_0 + n_fhr_2);