>>699
一応こう書けばすむことを知った上で、後はご自由に。

double b = (double) bad / nbad == 0 ? 1 : nbad; // 0チェックはこっちでやった方が親切
double g = (double) good / ngood == 0 ? 1 : ngood; // その辺も、お好みでどうぞ

double min_b_1 = min(1, b); // 同じ関数を全く同じ条件で2度呼ぶのは一応避けてみた
double min_g_1 = min(1, g); // そうなると立場上、こちらも合わせることに
return min_b_1 / min_g_1 + min_b_1; // fは必ずしも要らない