计算平均值时小数部分无法显示的原因是什么?
问题原因
你这段代码里,a、b、c都是整数类型,它们相加的结果也是整数。当整数除以整数3时,C语言会执行整数除法——直接舍弃小数部分,只保留整数结果。之后再把这个整数赋值给float类型的avg,只会在末尾补.00,自然看不到小数部分。
解决方法
只要让除法运算变成浮点除法就行,有两种简单的修改方式:
把除数改成浮点型,比如用
3.0f代替3:#include<stdio.h> int main(){ int a, b, c; printf("Enter any three numbers:"); scanf("%d %d %d", &a, &b, &c); float avg = (a + b + c)/ 3.0f; // 将3改为浮点型常量 printf("%.2f", avg); return 0; }先把整数和强制转换成浮点型,再做除法:
#include<stdio.h> int main(){ int a, b, c; printf("Enter any three numbers:"); scanf("%d %d %d", &a, &b, &c); float avg = (float)(a + b + c)/ 3; // 强制转换和为浮点型 printf("%.2f", avg); return 0; }
两种方式都能让除法运算保留小数部分,最终输出正常的带两位小数的平均值。
内容的提问来源于stack exchange,提问作者Tanish Sharma
相关产品推荐
相关产品推荐

