|
这几天自己动手拿MEGA16做个简单的4功能计算器,在数据计算完后为double型的,想把这个double转化为字符串,下午自己写了个程序,在TC2.0上运行的挺好,但是拿到ICC里 出来的数字总是不着边际,心急火燎上来发个帖子求助高手。
函数如下:
void TrFtoA(double DataF,unsigned char str[],unsigned char n) //双精度数据DataF,目标字符串str[],小数点的位数n最大为8位
{
unsigned long int lengthZ,lengthX,Temp1,Temp2;
double Temp3,Temp4,Data;
unsigned char linshi2,linshi[20];
short int i,j,sign;
if(DataF < 0)
{
Data = 0 - DataF;
sign = 1;
}
else
{
Data = DataF;
sign = 0;
}
Temp2 = (unsigned long) Data;
for(lengthZ = 1;Temp2 >= 10;lengthZ ++)
Temp2 = Temp2 / 10;
Temp3= Data;
Temp1 = Temp2 = (unsigned long int) Data;
for(lengthX = 0; ;)
{
if(lengthX == n)
break;
Temp4 = (Temp3 * 10);
Temp1 = (Temp4);
if((Temp1 - (Temp2 * 10)) == 0)
break;
else
{
Temp3 = Temp3 * 10;
Temp2 = (unsigned long int)Temp3;
lengthX ++;
}
}
Temp1 = Temp1;
for(i = 0;Temp1 >= 10;i ++)
{
linshi = ((Temp1 % 10) + 48);
Temp1 = Temp1 / 10;
}
j = i;
linshi = Temp1 + 48;
linshi[i+1] = '\0';
for(i = 0;j >= 0;i ++)
{
linshi2 = linshi[j --];
str = linshi2;
}
str = '\0';
for(i = (lengthZ + lengthX + 2); i >= lengthZ;i --)
{
if(i ==lengthZ)
{
j = str;
str = 0x2E;
}
else
{
str = str[i - 1];
}
}
if(sign == 1)
{
for(i = (lengthZ + lengthX + 3); i >= 0;i --)
{
if(i == 0)
{
str = 0x2D;
}
else
{
str = str[i - 1];
}
}
}
}
如果有高手那里有现成的浮点转换为字符串和字符串转化为浮点的函数最好也给发下。 感激不尽啊。。。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|