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