无法计算正确的平均值
Unable to Calculate Correct Average
C语言,stdio.h库
示例代码:
float avg;
avg = 3 / 2;
printf("Average: %.2f", avg);
根据上面的代码,我期望得到以下输出:
Average = 1.50
但我得到的是:
Average = 1.00
这是为什么?我如何获得正确的输出?
你应该像这样使用它..avg=3.0/2.0
否则它会做整数除法。否则它被截断为 1。 (整数除法截断,所以任何小数部分,这里 .5
被丢弃)。
常数中有小数点表示是浮点数。所以结果没有被截断。
来自标准:-§6.5.5.5
When integers are divided, the result of the / operator is the
algebraic quotient with any fractional part discarded.
#include <stdio.h>
int main(void) {
float avg;
avg = (float) 3 / 2;
printf("Average: %.2f", avg);
return 0;
}
3 和 2 是整数,所以得到的整数,即 1 将在除法后转换为浮点数,你将得到 1.00。
你必须让它们漂浮,
这样做:
avg = 3.0 / 2.0;
你在那里进行整数除法。所以舍弃小数部分。
试试这个
float avg;
avg = 3.0 / 2;
printf("Average: %.2f", avg);
通过保留 float 类型的分子或分母,它将执行浮点除法。
C语言,stdio.h库
示例代码:
float avg;
avg = 3 / 2;
printf("Average: %.2f", avg);
根据上面的代码,我期望得到以下输出:
Average = 1.50
但我得到的是:
Average = 1.00
这是为什么?我如何获得正确的输出?
你应该像这样使用它..avg=3.0/2.0
否则它会做整数除法。否则它被截断为 1。 (整数除法截断,所以任何小数部分,这里 .5
被丢弃)。
常数中有小数点表示是浮点数。所以结果没有被截断。
来自标准:-§6.5.5.5
When integers are divided, the result of the / operator is the algebraic quotient with any fractional part discarded.
#include <stdio.h>
int main(void) {
float avg;
avg = (float) 3 / 2;
printf("Average: %.2f", avg);
return 0;
}
3 和 2 是整数,所以得到的整数,即 1 将在除法后转换为浮点数,你将得到 1.00。 你必须让它们漂浮, 这样做:
avg = 3.0 / 2.0;
你在那里进行整数除法。所以舍弃小数部分。
试试这个
float avg;
avg = 3.0 / 2;
printf("Average: %.2f", avg);
通过保留 float 类型的分子或分母,它将执行浮点除法。