分部不返双

时间:2012-11-28 23:07:48

标签: c# double rounding

以下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);

3 个答案:

答案 0 :(得分: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上阅读有关除法规则的更多信息。

答案 1 :(得分: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);

你必须将其中一个操作数强制转换为double,这样它会将其计算为double。

答案 2 :(得分:2)

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

fhr_1 = ((double)(n_fhr_1))/(n_fhr_1 + n_fhr_0 + n_fhr_2);