用网上搜到的联合体处理浮点数时出现问题

2019-08-18 21:06发布

我在网上搜浮点数写入eeprom并读取出来的方法,比较好的是用联合体的方法,但是我按照网上的方法读取出来的数据,小数点后面的数都没有了,只有前面的整数,哪位大神指点一下啊!下面是从网上搜到的方法
把所需要存取的浮点数和一个数组(char i[4])构成一个联合,存取的时候用数组,使用的时候用浮点数,如下:

union myfloat
{
   char i[4];
   float j;
}
写:
EEPROM_WRITE(0,myfloat.i[0]);
EEPROM_WRITE(1,myfloat.i[1]);
EEPROM_WRITE(2,myfloat.i[2]);
EEPROM_WRITE(3,myfloat.i[3]);
读:
myfloat.i[0]=EEPROM_READ(0);
myfloat.i[1]=EEPROM_READ(1);
myfloat.i[2]=EEPROM_READ(2);
myfloat.i[3]=EEPROM_READ(3);
使用浮点数:
float k=myfloat.j;


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
乱世疯子狂
1楼-- · 2019-08-18 23:55
搞了这么久,终于发现写入和读取要加延时才能得到正确的数据
BMN李
2楼-- · 2019-08-19 03:51
你是怎么知道只有整数部分的?使用printf打印输出的么?使用的%d么?
jxcrgt35
3楼-- · 2019-08-19 09:12
 精彩回答 2  元偷偷看……
乱世疯子狂
4楼-- · 2019-08-19 09:19
BMN李 发表于 2017-2-27 12:30
你是怎么知道只有整数部分的?使用printf打印输出的么?使用的%d么?

我赋值一个数进去,比如说12.5,我再将读出来的数据乘以10并用数码管显示出来,结果数码管显示120,后面的5没有了
乱世疯子狂
5楼-- · 2019-08-19 13:13
有没有大神给个在eeprom中存取浮点数的办法啊
jeff_梁
6楼-- · 2019-08-19 14:32
楼主  怎么解决的

一周热门 更多>