首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

将一个浮点数变换为字符串(有bug,不知道什么原因)

2012-12-23 
将一个浮点数转换为字符串(有bug,不知道什么原因)/* * 将一个浮点数转换为字符串 * 例如:123.456转换为12

将一个浮点数转换为字符串(有bug,不知道什么原因)

/* * 将一个浮点数转换为字符串 * 例如:123.456转换为"123.456" */#include<stdio.h>#include<stdlib.h>char *convert(double d){//代表浮点数d的整数部分int d1=(int)d;//代表浮点数d的小数部分double d2=d-d1;//用来存储浮点数d的整数部分int a[20];//用来存储浮点数d的小数部分int b[20];int aloc=0;int bloc=0;int i=0;//将整数部分装入数组a中while(d1>0){int temp=d1%10;a[aloc]=temp;aloc++;d1/=10;}//将小数部分装入数组b中while(d2>0.00001){d2*=10;int temp=(int)d2;b[bloc]=temp;bloc++;d2-=temp;}printf("aloc=%d\n",aloc);printf("bloc=%d\n",bloc);//申请内存空间(多申请两个空间是为了存放'.'和'\0')char *s=(char *)malloc(aloc+bloc+2);if(s==NULL){printf("create fail!|n");exit(1);}char *t=s;while(aloc>0){*t=a[aloc-1]+'0';aloc--;t++;}*t='.';t++;while(i<bloc){*t=b[i]+'0';i++;t++;}*t='\0';return s;}int main(){double d=123.456;char *s=convert(d);printf("%s\n",s);return 0;}

当输入double d=123.456时,输出结果为123.456

当输入double d=123.4567时,输出结果和预期的不一样,不知道为什么会产生这个bug?????????????

?

?

?

?

?

?

热点排行