找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1797|回复: 7
收起左侧

转一个大神的C语言浮点数转字符串数组代码

[复制链接]
ID:584195 发表于 2021-8-5 07:31 | 显示全部楼层 |阅读模式
//========================================================================================
void Display_oled_double(unsigned char Page,unsigned char Start_SEG,double dat)                        //显示一个双精度浮点数据
{
                char   k[12];                 //这里不能加code限定符,否则计算不正确
                unsigned char a;
                sprintf(k,"%.2f",dat);//dat是一个浮点数,可以其它类型,unsigned char unsigned long int.......都行,无所谓的,2f是取两个小数点后面的数1.00这样
                for(a=0;k[a]!='\0';a++)//这个是检测字符串有没有结束,C语言字符是以'\0'为结尾的
                {      
                Display_oled_Shuzi_1(Page,Start_SEG,k[a]); //这是显示函数,你自己写
                  Start_SEG=Start_SEG+8;
                }
}
sprintf实际上是把bat分解成字符串,然后分别存放在数组 k中,一个地址存放一个字符串.k的长度10个左右就差不多了
比如:bat为:12.345
那么,sprintf执行之后
K的0地址为"1"
1地址为"2"
2地址为"."
3地址为"3"
4地址为"4"
后面的"5"就没有了,因为"%.2f"指定小数点后面只有两位数,你也可以试下"%.5f"看一下是什么样子的
记住,数组里存放的是字符串,不是字符!!!!!!
所以,0地址的值实际上是1在ASCII中的值:49
这个函数会自动处理负号和小数点,最后会以'\0'结束,检测有没有'\0'就可以了

回复

使用道具 举报

ID:419909 发表于 2021-8-5 17:57 | 显示全部楼层
我记得数字转字符串,格式是: num+'0';
比如:
unsigned char str[2], num=12;
str[0]=(num/10)+'0';
str[1]=(num%10)+'0';
回复

使用道具 举报

ID:584195 发表于 2021-8-5 18:16 | 显示全部楼层
wfqxgw 发表于 2021-8-5 17:57
我记得数字转字符串,格式是: num+'0';
比如:
unsigned char str[2], num=12;

他这个是用sprintf来转换为字符串函数的,你这个是char。你这个也是对的,不过可以通过OLED来处理显示数字,字符等等。
回复

使用道具 举报

ID:883242 发表于 2021-8-5 19:55 | 显示全部楼层
wfqxgw 发表于 2021-8-5 17:57
我记得数字转字符串,格式是: num+'0';
比如:
unsigned char str[2], num=12;

你这个是整形,对浮点数无效。
回复

使用道具 举报

ID:401564 发表于 2021-8-6 01:28 | 显示全部楼层
这不是我发的那个吗?
啥就成大神了?7月底才开始学C语言的!!
回复

使用道具 举报

ID:584195 发表于 2021-8-6 07:14 | 显示全部楼层
Y_G_G 发表于 2021-8-6 01:28
这不是我发的那个吗?
啥就成大神了?7月底才开始学C语言的!!

对的,收藏一下,下次好用,谢谢你!你可是总工程师了,希望你能帮到我!
回复

使用道具 举报

ID:584195 发表于 2021-8-6 07:29 | 显示全部楼层
Y_G_G 发表于 2021-8-6 01:28
这不是我发的那个吗?
啥就成大神了?7月底才开始学C语言的!!

大神,我看到2018年你就学好汇编了!
没有说哪个好不好的,针对的东西不一样,很多时候是没有什么可比性,用C的话意思就是说:我不需要用到汇编的那些个优点,反过来也是一样的,用汇编的话:我不需要C的那些优点.
很重要的一点:C语言你是一定要会的,毕竟,面试的时候这一关是肯定要过的.
至于你学单片机要用什么语言去学,选择没有那么难的:用汇编入门,然后再学C语言.
再说点别的吧:在小代工厂里面一般,用汇编的比较多,主要是稳定性和成本问题,在方案公司里就不同了,主要是用C,做方案快,你走人了,下一个接手也容易.
就工资而言,如果你不进入嵌入式领域,纯汇编的工资是要比纯用C的工资高的,因为,工业级的东西,老板是不会在乎你用什么语言来写的,他只管看成本,能用9毛9的单片机,他肯定不会用1块的,特别是小家电这一块,用的大多是台系的8位单片机,稳定性不好,资源有限,C根本写不下,有的型号的单片机程序空间竟然是用B来做单位的.
如果你要进入嵌入式领域,却还在相关汇编,那就是你OUT了,除非是要精确到一个时钟的时间精度,汇编是没有什么用处的,一个16位数除法,你只能用减去去进行,更不用说什么算法之类的的了.
汇编优点在于时间精度和代码空间,C优点在于功能强大,没什么好比的.想学什么就学什么,或者是自己觉得学什么容易就学什么,已经开始学C了就不要学汇编了,我就是用汇编的,虽然代码的空间上是比C占用得少,但代码量多呀!一个小程序,完整的写下来,动不动就是上千行代码,一个指令写错了,能让你找一个星期......
回复

使用道具 举报

ID:401564 发表于 2021-8-6 13:22 | 显示全部楼层
zyluglugl 发表于 2021-8-6 07:29
大神,我看到2018年你就学好汇编了!
没有说哪个好不好的,针对的东西不一样,很多时候是没有什么可比性, ...

汇编是自学的,学了几年,用了几年,受不了了
现在年纪也大了,得多学点才行,不然以后混不到一口吃的了
过了35去找工作,只能在经验还加点分,不然的话,现在动不动就是985,211,像我这种高中毕业证件都是在电线杆上打电话叫人送过来的,我上哪里混饭吃呀
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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