无法计算正确的平均值

时间:2017-11-11 04:35:47

标签: c floating-point stdio

C语言,stdio.h库

示例代码:

float avg;
avg = 3 / 2;
printf("Average: %.2f", avg);

从上面的代码我希望得到以下输出:

Average = 1.50

但我得到了:

Average = 1.00

这是为什么?我如何获得正确的输出?

4 个答案:

答案 0 :(得分:1)

3和2是整数,因此得到的整数(即1)将在除法后转换为浮点数,你将得到1.00。 你必须让它们漂浮, 这样做:

avg = 3.0 / 2.0;

答案 1 :(得分:0)

你应该像这样使用.. avg=3.0/2.0否则就是整数除法。否则它被截断为1。 (整数除法截断,因此任何小数部分,此处.5都被丢弃)。

常量中的小数点表示它是浮点数。所以结果不会被截断。

从标准: - §6.5.5.5

  

当整数被分割时,/运算符的结果是   任何小数部分丢弃的代数商。

答案 2 :(得分:0)

#include <stdio.h>

int main(void) {
float avg;
avg = (float) 3 / 2;
printf("Average: %.2f", avg);

    return 0;
}

答案 3 :(得分:0)

你正在进行整数除法。所以小数部分被丢弃了。

试试这个

float avg;
avg = 3.0 / 2;
printf("Average: %.2f", avg);

通过保持float类型的分子或分母,它将执行浮点除法。