float类型转换为固定小数位数的字符串函数

今天在做东西时需要输出一个固定小数位数的字符串,在网上查到有个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));
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值