/*###### 问题遇到的现象和发生背景
c语言未来教育考试系统上的一道关于四舍五入的题目
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
float fun (float h )
{
long t;
t=(h1000+5)/10; /单精度数h乘以1000后再加5,相当于对h中的第三位小数进行四舍五入
除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去/
return (float)t/100; /除以100,保留2位小数/
}
void main()
{
FILE wf;
float a;
system("CLS");
printf("Enter a: ");
scanf ("%f",&a);
printf("The original data is : ");
printf("%f\n\n", a);
printf("The result : %f\n", fun(a));
/****************************/
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(8.32533));
fclose(wf);
/*****************************/
/*###### 运行结果及报错内容
INTER A: 3.155
THE ORIGINAL DATA IS : 3. 155000
The TESULT : 3. 150000
请按任意键继续.:
显然没有四舍五入
真正的四舍五入*/
t=(h1000+5)/10;是不是少了个,t=(h1000+5)/10;
float fun (double h )
{
int i=0;
i = h*1000;
if(i%10 >= 5) i = i-i%10+10;
else i = i-i%10;
return (float)i/1000;
}
把代码用代码片功能发出来,否则会按Markdown语法解释。