69,371
社区成员
发帖
与我相关
我的任务
分享
typedef struct{
unsigned long 整数部分;
unsigned long 小数部分;
} o_ufloat,正浮点;
void ufloat_add(o_ufloat *s1,o_ufloat *s2) //正浮点加
{
//double a=9.9,b=9.9;
//float_add后为18.18,正确应为19.8,目前难题是进位处理。
s1->整数部分+=s2->小数部分;
s1->小数部分+=s2->小数部分;
}
正浮点 f1,f2; //f1和f2小数和整数都是9,也就是两个都是9.9
ufloat_add(&f1,&f2);//得到的肯定是18.18,但正确的应该是19.8
o_ufloat *stouf(char* s1)//字符串到正浮点
{
o_ufloat f;
o_ufloat* p=&f;
char dot;
while(TRUE) //无限循环
{
if(o_isdigit(*s1)==1 && dot==0) //没遇到小数点,而且是数字
{
f.整数部分*=10;
f.整数部分+=*s1++; //位置前进
}
else if(*s1++=='.')//遇到小数点
{
dot=1;
}
else if(dot == 1 && o_isdigit(*s1)) //已经遇到小数点而且是数字
{
f.小数部分/=10;
f.小数部分+=*s1++;
}
else //什么都不是
{
break;
}
}
return p;
}
char *uftos(o_ufloat *s1)//正浮点到字符串
{
char fs[30];
char* p=fs;
wsprintf(p,"%lu.%lu",s1->整数部分,s1->小数部分);
return p;
}