求看看这行代码,能解释下错误原因吗,还有双精度和单精度区别

#include

int main()
{ float a=1.3;
if(a==1.3){printf("yes");}
else{printf("no");}
}

运行结果是no,与期望值yes不同,不需要改进建议就是问问这有什么逻辑问题

浮点数存储是不精确的,实际存储的可能是类似1.3000000001或1.29999999999999这样的值,浮点数尽量做差比较,只要差的绝对值小于一个很小的数(如1e-6即0.000001)就可认为相等,不要用相等判断

确实跟浮点数误差有关系的。一般不建议浮点数之间进行相等判断。
浮点数判断相等一般方式为if(fabs(a-1.3) < 1e-6)