浮点数据无法比较相等的原因是由于计算机内部使用二进制表示浮点数,但是在二进制下表示的浮点数并不是精确的,导致在比较浮点数大小时可能会出现误差。例如,0.1在二进制下表示不是精确的,因此使用浮点数进行比较时可能会出现0.1不等于0.1的情况。
解决办法有以下两种:
1.使用“近似相等”比较方法:在比较两个浮点数是否相等时,可以将它们之间的差值与一个较小的阈值进行比较,如果差值小于阈值,则认为它们是近似相等的。
2.使用十进制表示法:将浮点数转换为十进制数后进行比较,这种方法可以避免二进制表示下的精度误差,但是会降低计算速度和增加内存使用。
float value_read_AIN3;
float vp;if((unsigned int)(value_read_AIN3*100)==(unsigned int)(vp*100))