jxcrgt35 发表于 2018-9-29 10:48:31

请教C51 sprintf数据转换出问题

使用KEIL C51软件,芯片是c8051f020,在使用sprintf函数转换时,出现问题,不解,请教大家。
unsigned char   xdatatempp,i;

i=13;
sprintf(tempp,"%d",i);

在tempp存储的是0x33 ,0x34 ,0x00 明显不对。
如果这样sprintf(tempp,"%d",(int)i); 则转为0x31 ,0x33 ,0x00是对的。

takashiki 发表于 2018-9-29 10:57:43

sprintf(tempp,"%bd",i);

cocom 发表于 2018-9-29 11:20:41

数据类型,i是什么类型你要与%d匹配。

jxcrgt35 发表于 2018-9-29 11:32:38

takashiki 发表于 2018-9-29 10:57


谢谢!!

jxcrgt35 发表于 2018-9-29 11:33:33

cocom 发表于 2018-9-29 11:20
数据类型,i是什么类型你要与%d匹配。

unsigned char i=13;

jxcrgt35 发表于 2018-9-30 03:40:35

本帖最后由 jxcrgt35 于 2018-9-30 03:48 编辑

str="124.414194";
      
      sprintf (&tempp,"%f",atof(str));

结果等于124.414200
请教怎么提高转换经度?

jxcrgt35 发表于 2018-9-30 03:46:39

本帖最后由 jxcrgt35 于 2018-9-30 03:49 编辑

str="124.414194";
      
      sprintf (&tempp,"%f",atof(str));

结果等于124.414200
请教怎么提高转换经度?

jxcrgt35 发表于 2018-9-30 03:53:08

takashiki 发表于 2018-9-29 10:57


str="124.414194";
      
      sprintf (&tempp,"%f",atof(str));

结果等于124.414200
请教怎么提高转换经度?

jxcrgt35 发表于 2018-9-30 03:53:59

cocom 发表于 2018-9-29 11:20
数据类型,i是什么类型你要与%d匹配。

str="124.414194";
      
      sprintf (&tempp,"%f",atof(str));

结果等于124.414200
请教怎么提高转换经度?

t3486784401 发表于 2018-9-30 07:37:53

你都通过float了还要啥精度,6-7位有效数字撑死了。

jxcrgt35 发表于 2018-9-30 09:44:03

t3486784401 发表于 2018-9-30 07:37
你都通过float了还要啥精度,6-7位有效数字撑死了。

转换GPS点经纬度信息,不知道会区别到什么程度

t3486784401 发表于 2018-9-30 11:48:46

jxcrgt35 发表于 2018-9-30 09:44
转换GPS点经纬度信息,不知道会区别到什么程度

6400km * 2PI * 1e-6 大致是 40m 的样子,这是低纬度最差的精度。

明显经纬度的有效数字不够的,印象中都是 9-10 位有效数字

jxcrgt35 发表于 2018-9-30 15:30:47

t3486784401 发表于 2018-9-30 11:48
6400km * 2PI * 1e-6 大致是 40m 的样子,这是低纬度最差的精度。

明显经纬度的有效数字不够的,印象中 ...

谢谢回复,有什么方法提高吗?

su33691 发表于 2018-9-30 15:43:22

c51仅仅支持单精度的浮点运算。可以自行写代码实现双精度的浮点运算。
也可以用AVR,M0等单片机实现。
页: [1]
查看完整版本: 请教C51 sprintf数据转换出问题