一个巧妙的C语言函数

题目要求:
实现一个函数,保留一个实型数的两位小数,第三位小数四舍五入(规定实型数是正数)

代码:

#include <stdio.h>
//保留一个实型数的两位小数,第三位小数四舍五入(规定实型数是正数)
float fun ( float  h )
{	//eg 1:
	//1234.567777890
	//*1000:1234567.777890
	//+5:1234572.777890
	//  /10:123457.2777890  t:123457
	//  /100:1234.57
	//eg2:
	//345.123
	//*1000:345123  +5:345128
	//  /10:34512
	// /100:345.12
  long t;
  //先让前三位小数升位到整数位,给第三位小数对应位+5,再/10
  //然后舍去剩下的小数位
  t=(h*1000+5)/10;
  //将t转换位float型,再除以100,就将前两位小数归位到对应的小数位
  return (float)t/100;

}

int main( )
{   float  a;
    printf ("Enter  a:  "); scanf ( "%f", &a );
    printf ( "The original data is :   " );
    printf ( "%f \n\n", a );
    printf ( "The result :  %f\n", fun ( a ) );

	return 0;
}