float和double数据EEPROM存储

一、float和double的存储结构

 1、参考博客

      https://blog.csdn.net/qq_36206070/article/details/89683848
      https://www.cnblogs.com/still-smile/p/13362215.html

      http://blog.sina.cn/dpool/blog/s/blog_8a18c33d01013bke.html

      https://blog.csdn.net/qq_36414647/article/details/98372398

 

二、浮点数存入EEPROM

http://www.openedv.com/posts/list/64691.htm

#include<stdio.h>
#include<stdlib.h>
union data
{
    unsigned char data[8];
    double result;
}test;
int main(void)
{
    unsigned char *p,i;
    float f1 = 123.123f;
    double d1 = 123.123;
    int x1 = 0x1234;    
    /*利用指针数据拆分变量*/
    unsigned char d[8] = {23,217,206,247,83,67,65,64};
    unsigned char *p1 = NULL;
    double a;

    /*查看字节及精度*/
    /*float:4字节;double:8字节*/
    /*float精度:7~8位有效数字;double精度:16~17位有效数字*/
    printf("float(sizeof):%d,double(sizeof):%d
",sizeof(f1),sizeof(d1));
    printf("f1 = %f,d1=%f
",f1,d1);
    /*利用联合体查看数据的拆分*/
    test.result = 34.526;
    printf("%f
",test.result);
    p = test.data;
                for(i=0;i<8;i++)
    {
        printf("%d
",*p);
        p++;
    }
    /*利用指针查看数据的拆分*/
    p1 = d;
    a = *((double *)(p1+8*0));
    //b = *((double *)(p1+8*1));
    printf("%f
",a);

    system("pause");
    return 0;
}

 

原文地址:https://www.cnblogs.com/wy9264/p/14258159.html