1

下面的值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);
4

3 回答 3

7

您至少需要一个double类型的操作数。否则你会得到整数结果(会发生整数除法)

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上阅读有关除法规则的更多信息。

于 2012-11-28T23:10:02.087 回答
5
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);

您必须将其中一个操作数转换为加倍,这样它将计算为加倍。

于 2012-11-28T23:10:23.390 回答
2

你不能简单地除整数,因为四舍五入你会得到 0。请尝试:

fhr_1 = ((double)(n_fhr_1))/(n_fhr_1 + n_fhr_0 + n_fhr_2);
于 2012-11-28T23:10:39.590 回答