一个巧妙的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;
}