今天在做东西时需要输出一个固定小数位数的字符串,在网上查到有个FormatFloat函数可以实现这样的功能,但在MSDN中没有找到这个函数。还有可以使用MFC中的Format函数,但是不想想用MFC的东西,所以自己写了个简单的函数来实现转换。
该函数的功能是把一个float类型转换为一个char*作为输出,输出的数小数位个数由输入的值确定:
输入: int.............确定所要输出的小数位的个数; float.............需要转换的浮点数。
输出: char*..............浮点数转换为满足要求的字符串。
template<class T> T cfExp(T base, int exponent); // 一个求幂的函数,在后面的函数中要用到
char* cfFormatFloat(int num, float f)
{
int temp1=f, temp2=f;
int nCount=0;
int i=0;
char chBuf[256]={0};
while(temp1>0)
{
++ncount; //确定整数的位数,以确定小数点的位置
temp1/=10;
}
for(--nCount;nCount >= 0;++i,--nCount )
{
chBuf[i] = '0'+temp2/cfExp<int>(10,nCount);
temp2%= cfExp<int>(10,nCount);
}
chBuf[i++]='.'; //小数点
int num1=num;
for(int n=1; n <=num; ++n)
{
chBuf[i++]='0'+ ((int)(((f-(int)f)+5*cfExp<float>(0.1,(num+1)))*cfExp<int>(10,n)))%10;
}
return chBuf;
}
//
template<class T>
T cfExp(T base, int exponent)
{
if(0 == exponent)
{
return 1;
}
return base*cfExp(base, (exponent-1));
}