标题: 单片机存储浮点数后再次读取发现变小了,求解决办法 [打印本页]

作者: mcuee    时间: 2020-3-17 11:21
标题: 单片机存储浮点数后再次读取发现变小了,求解决办法
如题,现在单片机需要保存一个浮点数(float)到eeprom,比如保存的数字是1.0010,保存后再读取发现变成了1.0009 ,虽说对运算结果影响不大,但还是想前后保持一致,请问有什么办法吗?谢谢!

作者: Y_G_G    时间: 2020-3-17 13:45
一个8位的单片机是可以不用浮点数据的
1.0010是可以=10010的,高低两个字节就可以保存了
1.0010却要用四个字节来保存,我不知道C51的标准,但如果占用内存过多的话,就会把多出来 的部分去掉不了,这就产生误差了
如果能用整型数据就尽量用整型的,没有说是一定要用浮点型不可的
作者: SHXL_1    时间: 2020-3-17 15:40
采用union,里面包含一个float型数据,4个byte组成的struct数据。
作者: eastjack    时间: 2020-3-17 17:29
用四舍五入法处理。ieee浮点表示有精度误差。
作者: 天地一微尘    时间: 2020-3-17 22:23
可以考虑保存成int类型,取用的时候运算一下就行了。
作者: 王天星    时间: 2020-3-18 13:01
我遇到过这种情况,做暴力的做法就是保留精度转换成int




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1