OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16073|回复: 22

[分享]字符串与浮点数转换函数

[复制链接]

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2013-5-8
在线时间
13 小时
发表于 2013-6-15 12:16:28 | 显示全部楼层 |阅读模式
昨天在做一个项目时用到字符串与浮点数互换,用战舰板测试没有问题,现放在这里与大家共享。



字符串转浮点数.c

956 Bytes, 下载次数: 3093

浮点数转换成字符串.c

837 Bytes, 下载次数: 6006

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-6-15 12:27:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-6-15 15:33:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-6-15 17:38:02 | 显示全部楼层
恩,不错,有奉献精神。
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-6-16 13:58:48 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-6-18 10:55:06 | 显示全部楼层
谢谢分享。
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
发表于 2013-6-18 13:11:43 | 显示全部楼层
不错!还有一种方法也很好用,sprintf也很强大。遇到不能够include <stdio.h>的情况下也可以移植源码,下面是linux下的printf库,很多值得我们参考哦。

printf.rar

20.81 KB, 下载次数: 1813

for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
发表于 2013-6-18 13:44:39 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2015-3-11
在线时间
17 小时
发表于 2016-9-23 09:13:49 | 显示全部楼层
正在找,非常感谢
有时候,拒绝,也是一种关爱!不吸烟,我不干!
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2016-9-24 15:16:14 来自手机 | 显示全部楼层
sprintf库可以借鉴
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

高级会员

Rank: 4

积分
706
金钱
706
注册时间
2015-6-5
在线时间
80 小时
发表于 2016-9-24 17:24:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

6

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2016-1-7
在线时间
54 小时
发表于 2016-11-2 00:25:19 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-11-2 08:17:14 | 显示全部楼层
可以直接调用库函数 或 格式化输出函数,觉得能用库的还是尽量使用库
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-3-4
在线时间
0 小时
发表于 2017-3-4 15:56:40 | 显示全部楼层
谢谢分享,正好想学习
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2017-7-29
在线时间
16 小时
发表于 2017-8-5 12:00:59 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

7

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2014-2-11
在线时间
14 小时
发表于 2017-10-27 23:18:40 | 显示全部楼层
在C++中 浮点数转换为字符串的应用
为可睡懒觉,而奋斗终身!
回复 支持 反对

使用道具 举报

7

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2014-2-11
在线时间
14 小时
发表于 2017-10-27 23:19:41 | 显示全部楼层
爱睡懒觉 发表于 2017-10-27 23:18
在C++中 浮点数转换为字符串的应用

在C++中 浮点数转换为字符串的应用
[mw_shl_code=cpp,true]class FString
{
public:
    char fstr[20];
    FString(): fstr({0}) {}
    ~FString(){}
    explicit FString(double data, int decm = 3){
        int i,j,k,l;
        long temp, tempoten;
        uint8_t intpart[20], dotpart[20];  // 数的整数部分和小数部分

        //1.确定符号位
        if(data < 0) {fstr[0]='-'; data = -data; l = 0;}
        else {fstr[0]='+'; l = -1;}

        //2.确定整数部分
        temp = (long)data;

        i = 0;
        tempoten = temp / 10;
        while(tempoten != 0)
        {
            intpart = temp - 10 * tempoten + 48; //to ascii code
            temp = tempoten;
            tempoten = temp/10;
            i++;
        }
        intpart = temp + 48;

        //3.确定小数部分,取了decm位小数
        data = data - (long)data;
        for(j = 0; j < decm; j++)
        {
            dotpart[j] = (int)(data*10) + 48;
            data = data * 10.0;
            data = data - (long)data;
        }

        //4.数据组装
        for(k = 1; k <= i+1; k++) fstr[k+l] = intpart[i+1-k];
        fstr[i+2+l] = '.';
        for(k = i + 3;k < i+j+3; k++) fstr[k+l] = dotpart[k-i-3];
        fstr[i+j+3+l] = 0x0D;
    }

    operator const char*() const { return fstr; }
};

#define FDS(V, D) FString(V, D)
#define FS(V)   FString(V)[/mw_shl_code]
为可睡懒觉,而奋斗终身!
回复 支持 反对

使用道具 举报

7

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2014-2-11
在线时间
14 小时
发表于 2017-10-27 23:26:34 | 显示全部楼层
爱睡懒觉 发表于 2017-10-27 23:19
在C++中 浮点数转换为字符串的应用
[mw_shl_code=cpp,true]class FString
{

fstr[i+j+3+l] = 0x0D;   需要修改成  fstr[i+j+3+l] = '\0';
否则会有意外的错误!!!
为可睡懒觉,而奋斗终身!
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2016-7-21
在线时间
12 小时
发表于 2017-12-1 15:53:15 | 显示全部楼层
非常感谢
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2017-11-24
在线时间
18 小时
发表于 2017-12-5 10:52:57 | 显示全部楼层
学习了,以后有用到,谢谢
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2017-12-22
在线时间
18 小时
发表于 2018-3-26 22:07:47 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2018-11-5
在线时间
27 小时
发表于 2020-4-28 15:11:35 | 显示全部楼层
非常感谢
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2020-3-2
在线时间
1 小时
发表于 2020-5-2 21:47:06 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 10:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表