一、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; }