请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。
例如:h值为8.32433,则函数返回8.32, h值8.32533,则函数返回8.33。
#include<stdio.h>
float fun(float h)
{ long t;
h*=1000;
t=(h+5)/10;
return(float)t/100;
}
void main()
{
float a;
printf("Enter a:");
scanf("%f",&a);
printf("The original data is:");
printf("%f\n\n",a);
printf("The result:%10.2f\n",fun(a));
}
算法不错,不过输入123456.123456,那么它显示123456.13,本人认为浮点范围所限制,即是机器问题,还有
把它程序变为这样:
#include<stdio.h>
float fun(float h)
{ long t;
h*=1000;
t=h+5;
return(float)t/1000;
}
void main()
{
float a;
printf("Enter a:");
scanf("%f",&a);
printf("The original data is:");
printf("%f\n\n",a);
printf("The result:%10.2f\n",fun(a));
}
如果输入0。122222,那么它输出0。13,为什么?