想保留小数点必须用double或float型数据,还有两个整形数据相除会自动舍去小数,
解决方法改变类型或者加个强制类型转化
51中float在存储其中占4字节,想要无损保存需要转换为字节序列保存,使用时在按字节序列读取。
float a;
char *p;
p=(char *)&a;
eep_save(addr p len); //保存示例
eep_read(addr p len); //读取示例
这种不能支持浮点运算的,它就会将这个浮点运算转化为定点运算,就是先乘上一定倍数,使之成为定点,计算,之后再除回一定数
如果硬件本身支持浮点运算的,就是带了FPU的,它会用FPU直接处理浮点运算
51单片机可以使用float或者double类型来保存浮点型的数据,
但是51单片的战斗力太弱,一个浮点计算要浪费好长时间,建议根据需要将数据放大十倍百倍,最好能够直接全部变成整数,然后计算的时候,注意一下放大的倍数一直就行了,如果输出的话,在转换成浮点数输出就行了。
若果浮点计算少的话,用51还行,如果计算多的话,建议使用带有硬件浮点运算的控制器。