double cost_factor(int num_of_sections, int num_of_students) {
double cost;
cost = 35 * num_of_sections / num_of_students;
printf("Cost = %.2lf\n", cost);
return cost;
}
Run Code Online (Sandbox Code Playgroud)
无论我为num_of_sections和num_of_students输入什么,我得到的返回值为1.00.如果我输入11(num_of_sections)和364(num_of_students),我得到1.00,但是它应该是1.06.有谁能识别他们的错误?
你用整数做数学.所以你将得到整数值.
const = 35 * num_of_sections / num_of_students
Run Code Online (Sandbox Code Playgroud)
会给你一个int,即使cost是一个双,因为所有组件都是ints.
您将需要对值进行类型转换以获得double输出
cont = 35.0 * (double)num_of_sections / (double)num_of_students;
Run Code Online (Sandbox Code Playgroud)
请注意,过度杀戮,足以将等值中的一个值提升为双倍.
cont = 35.0 * num_of_sections / num_of_students;
Run Code Online (Sandbox Code Playgroud)
然后,C会自动为您推广其他值.