回11L:显示17.89997是因为float的精度过低。可以使用double。
Vx的程序不错……我的实现参见下面代码:
#include <stdio.h>
double fun1(double f)
{
static char buf[50];
sprintf(buf,"%.2f",f);
sscanf(buf,"%lf",&f);
return f;
}
double fun2(double f)
{
return (float)(int)(f*100+0.5)/100;
}
int main(void)
{
printf("%f,%f",fun1(17.88),fun2(17.88));
return 0;
}
[[it] 本帖最后由 StarWing83 于 2008-7-17 20:34 编辑 [/it]]