本文目录
C语言中的四舍五入问题
C语言规定%f若f前没有标注任何数字,编译系统输出默认小数点后有6位数像%.4f,输出小数点后是4位数字像%.8f,输出小数点后是8位数字它之所有扩大1000倍,就是想要小数点后的两位数 四舍五入就像小学那种啊大于5就往前移动1,本来那个归0题目已经很清楚了x={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0}里面所有数相加,除以个数本来应该是15.03 但输出要符合系统就变成15.030000了
c语言中怎么四舍五入
# incloud 《stdio》
int main(void)
{
float a ;
scanf(“%f”,&a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata){
long pre = 1,i;
for(i = 0; i 《precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00)》 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。
C语言四舍五入保留两位小数
#includemain(){doublea;printf("请输入一个四位小数:\n");scanf("%lf",&a);//双精度应该是的%lfa*=100;//扩大100倍,举个例子:a=123.4567,a=a*100,则a=12345.67a+=0.5;//加0.5进行四舍五入a=12346.17a=(int)a;//这个地方是想保留两位小数,后边的舍去,所以进行强制类型转换.a/=100;//上面扩大100倍,现在要对其缩小100printf("结果是:%f\n",a);//这样就行了,或者printf("结果是:%.2f\n",a);}