WinCE 6.0下字符串转换为浮点数
来源:互联网 发布:数据采集与监控系统 编辑:程序博客网 时间:2024/06/08 05:12
float myatof(TCHAR * str) //输入的是一个以NULL结尾的字符串指针
{
float fRes=0;//整数部分
if(str) //指针不为空
{
float fDemic=0;//小数部分
int nDecimalCount=1;//小数位数*10
int nLen=_tcslen(str);//总共长度
if(nLen>30)
nLen=30; //再多位数考虑没有意义故从30位截
BOOL bExponential=FALSE;//是否科学记数法的指数E
BOOL bHaveradixpoint=FALSE;//是否有小数点, 并且控制只能有一个
BOOL bIsNegative=FALSE;//是否负数
double nEcount=0;//e后面的10的幂次值
for(intn=0;n<nLen;n++)
{
int nValue=str[n]-_T('0');//是否为数字
if(nValue<0 ||nValue>9)
{
nValue=-1;
}
if(nValue!=-1)//如果是数字
{
if(!bExponential)//如果不是科学计数法
{
if(!bHaveradixpoint)
{
fRes=fRes*10+nValue;
}
else
{
fDemic=fDemic*10+nValue;
//不采用下面的方法,是/10+3/100!=0.23
//float ftemp=nValue;
// fRes=fRes+ftemp/nDecimalCount;;
//所以采用/100,它也不一定等于.23但确保等于.29-0.2999之间。
nDecimalCount*=10;
}
}
else//是指数
{
nEcount=nEcount*10+nValue;
}
}
else//如果不是数字
{
if(str[n]==_T('E') ||str[n]==_T('e'))
{
if(bExponential)//已经有一个E了
break;
bExponential=TRUE;
}
else if(n==0 && str[n]==_T('-'))//如果是"-"号,并且只能在第一位
{
bIsNegative=TRUE;
}
else if(str[n]==_T('.'))
{
if(bHaveradixpoint==FALSE)
{
bHaveradixpoint=TRUE;
}
else
{
break;
}
}
else//其它各种符号都返回
{
break;
}
}
}//for
fRes=fRes+fDemic/nDecimalCount;
fRes*=pow((double)10,nEcount);
if(bIsNegative)
{
fRes*=-1;
}
}
return fRes;
}
- WinCE 6.0下字符串转换为浮点数
- 浮点数转换为字符串
- 浮点数转换为字符串
- 浮点数转换为字符串
- 字符串转换为浮点数
- fcvt()浮点数转换为字符串
- 将一个字符串转换为浮点数
- Arduino浮点数转换为字符串
- 浮点数转换为字符串函数
- Arduino浮点数转换为字符串---dtostrf
- 如何在 C++ 中将字符串转换为浮点数
- ecvt把一个浮点数转换为字符串
- ecvt把一个浮点数转换为字符串
- 字符串转换为浮点数时如何避免精度损失
- vc 浮点数转换为内存十六进制字符串
- C/C++中如何将浮点数转换为字符串
- vc 浮点数转换为内存十六进制字符串
- vc 浮点数转换为内存十六进制字符串
- jquery uploadify的JS用法以及JAVA类的用法
- JS键盘对应Code
- x264中不同帧类型的编码顺序
- 《集体智慧编程》之决策树(学习笔记)
- 浅谈android截屏问题
- WinCE 6.0下字符串转换为浮点数
- printf 输出格式
- spring管理的hibernate事务不会自动flush的问题-今天真遇到这问题了
- Linux查看CPU和内存使用情况
- android截屏代码实现方法
- JS键盘监听事件的键盘码
- 根据图的度数判断图的连通性的Havel-Hakimi定理
- Python抓取中文网页
- mac 地址限制 DHCPD 配置