ftoa浮法成字符串
2015-06-21 17:27
260 查看
#include <stdio.h>
bool ftos(float num,char *s,int n)
{
int temp;
float t=num;
int pn=0;
bool flag_s=true;
bool flag_z=false;
for(int i=n;i>0;i--)
t=t*10;
printf("%f\n",t);
temp=t;
printf("%d\n",temp);
if(temp<0)
{
temp=-temp;
t=-num;
flag_s=false;
}
if(temp==0)
{
if(n>0)
{
for( pn=0;pn<n;pn++)
{
*(s+pn)='0';
}
*(s+pn)='\.';
++pn;
}
*(s+pn)='0';
++pn;
if(!flag_s){
*(s+pn)='\-';
++pn;
}
*(s+pn)='\0';
}
else
{
while(temp>0)
{
if(pn==n && n>0)
{
*(s+pn)='\.';
++pn;
}
else{
*(s+pn)=(temp%10)+'0';
temp=temp/10;
++pn;
}
}
while(pn<n)
{
*(s+pn)='0';
++pn;
}
if(pn==n)
{
*(s+pn)='\.';
++pn;
if(flag_s){
*(s+pn)='0';
++pn;
}
}
if(!flag_s){
if(t<1.0){
*(s+pn)='\.';
++pn;
*(s+pn)='0';
++pn;
}
*(s+pn)='\-';
++pn;
}
*(s+pn)='\0';
}
int i(0),j(pn-1);
while(i<j)
{
int temp=*(s+i);
*(s+i)=*(s+j);
*(s+j)=temp;
++i;
j--;
}
return true;
}
int main()
{
char s[20];
float num=123.456;
int n=3;
scanf("%f",&num);
scanf("%d",&n);
printf("float num is %f\n",num);
if(ftos(num,s,n))
{
printf("after convert is %s\n",s);
}
return 0;
}
bool ftos(float num,char *s,int n)
{
int temp;
float t=num;
int pn=0;
bool flag_s=true;
bool flag_z=false;
for(int i=n;i>0;i--)
t=t*10;
printf("%f\n",t);
temp=t;
printf("%d\n",temp);
if(temp<0)
{
temp=-temp;
t=-num;
flag_s=false;
}
if(temp==0)
{
if(n>0)
{
for( pn=0;pn<n;pn++)
{
*(s+pn)='0';
}
*(s+pn)='\.';
++pn;
}
*(s+pn)='0';
++pn;
if(!flag_s){
*(s+pn)='\-';
++pn;
}
*(s+pn)='\0';
}
else
{
while(temp>0)
{
if(pn==n && n>0)
{
*(s+pn)='\.';
++pn;
}
else{
*(s+pn)=(temp%10)+'0';
temp=temp/10;
++pn;
}
}
while(pn<n)
{
*(s+pn)='0';
++pn;
}
if(pn==n)
{
*(s+pn)='\.';
++pn;
if(flag_s){
*(s+pn)='0';
++pn;
}
}
if(!flag_s){
if(t<1.0){
*(s+pn)='\.';
++pn;
*(s+pn)='0';
++pn;
}
*(s+pn)='\-';
++pn;
}
*(s+pn)='\0';
}
int i(0),j(pn-1);
while(i<j)
{
int temp=*(s+i);
*(s+i)=*(s+j);
*(s+j)=temp;
++i;
j--;
}
return true;
}
int main()
{
char s[20];
float num=123.456;
int n=3;
scanf("%f",&num);
scanf("%d",&n);
printf("float num is %f\n",num);
if(ftos(num,s,n))
{
printf("after convert is %s\n",s);
}
return 0;
}
相关文章推荐
- Linked List Cycle
- git 远程协作的主要命令
- spring 定时任务相关链接
- arm-linux-gcc-4.3.2安装步骤
- Netlink创建的RTM_NEWROUTE消息
- 黑马程序员——Java基础——泛型
- 15第十六周项目一——平方根的异常
- Android 官方推荐 : DialogFragment 创建对话框
- RegExp正则校验之Java及R测试
- 删除Ubuntu多余的开机启动项(旧的内核)
- MySQL——病型数据库与分区
- 餐饮美食菜品推荐数据表
- 如何查看服务器机房位置
- Word Break
- Scanner 的使用——空字符串的读入
- MySQL——复制
- 如何判断用paint画出的图形的坐标是在哪里?
- [转载]StoryBoard 和 Xib 开发时,一些小技巧
- 【LDA】用MPI优化GibbsLDA++-0.2
- Android横竖屏切换属性