WinCE下字符串转浮点值
来源:互联网 发布:时间计时器软件 编辑:程序博客网 时间:2024/05/18 03:38
有些wince平台不支持_ttof,在tchar.h头文件中可以看到:
1
// Not implemented for CE
2
#define _ttof _wtof
3
#define _tstof _wtof
所以无法使用_ttof将字符串转换为float值,这里考虑将unicode字符串先转换为多字节字符串,然后利用atof转换也应该可行。另外也可以实现一个自己的的_ttof,不过可能实现的没有系统提供的性能好,或者对各种字符串输入情况考虑的不周全(比如3.141.5926、3..1415926、3.1415926|等等)。不过仔细调试一下,用来完成自己的工作应该没有问题。下面简单实现一下:
1
float
z_ttof(
LPCTSTR
ptr)
2
{
3
float
result = 0.0;
4
int
signal
= 1;
5
int
dotFlag = 0, cnt = 0;
6
int
div
= 1;
7
8
if
((*ptr >=
'0'
&& *ptr <=
'9'
) || *ptr ==
'-'
|| *ptr ==
'+'
)
9
{
10
if
(*ptr ==
'-'
|| *ptr ==
'+'
)
11
{
12
if
(*ptr ==
'-'
)
13
signal
= -1;
14
ptr++;
15
}
16
}
17
else
18
return
0.0;
19
20
while
((*ptr >=
'0'
&& *ptr <=
'9'
) || *ptr ==
'.'
)
21
{
22
if
(*ptr ==
'.'
)
23
{
24
if
(dotFlag != 1)
25
{
26
dotFlag = 1;
27
ptr++;
28
continue
;
29
}
30
else
31
break
;
32
}
33
34
if
(dotFlag == 1)
35
cnt++;
36
37
result = result * 10 + (*ptr++ -
'0'
);
38
}
39
40
while
(cnt--)
41
div
*= 10;
42
43
return
signal
* result /
div
;
44
}
不过由于浮点值的存储和除法计算的精度问题,最后得到的结果和原字符串中的浮点值会有点误差,这个应该不会影响到这个浮点值的使用。即使是系统提供的转换函数,也会有极其微小的误差,只要不是要飞月球的项目,这点误差应该是没问题吧。
如果需要字符串转double值,WinCE系统支持_tcstod函数,可以通过如下代码进行转换:
1
// Convert strings to a double-precision value.
2
double
StringToDouble(
LPCTSTR
lpszSrc)
3
{
4
TCHAR
* endptr;
5
return
_tcstod(lpszSrc, &endptr);
6
}
endptr指向扫描结束字符,比如“3.1415926|”,_tcstod转换之后,endptr指向“|”。
- WinCE下字符串转浮点值
- WinCE 6.0下字符串转换为浮点数
- 字符串转浮点数
- 字符串转浮点数
- 字符串转浮点
- 字符串转浮点数
- python: 字符串转浮点数
- python 字符串转浮点数
- 浮点数值转十六进制字符串
- JS浮点转整型、数字转字符串
- C中浮点数转字符串
- double浮点数转字符串算法
- 整数(浮点数)转字符串
- C中浮点数转字符串
- 【小折腾--C】字符串转浮点型
- jsp 字符串转整形/浮点型
- 字符串转整数或浮点数
- 字符串转浮点数 str2float (python版本)
- 简单通通讯协议
- ITF跆拳道正弦波动的原理
- Java生产图片验证码
- android多线程二(消息模型)
- U大师U盘装系统——安装ghostWIN7系统教程(V1.1.0版)
- WinCE下字符串转浮点值
- php学习笔记(三十八)smarty中的内建函数的使用
- Android 方位传感器 (传感器编程合集)
- WSAGetLastError返回0
- Fast C++ Delegate: Boost.Function 'drop-in' replacement and multicast
- js常用技巧
- 探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探
- 例解基于UML的面向对象分析与设计
- Install Magento on Ubuntu