0.7不小于0.7但错误的结果被打印

这里’a’应打印为0.7 <0.7为假,但打印'c'。

#include void main() { float a=0.7; if(a<0.7) printf("c"); else printf("a"); } 

你似乎误解了浮点数。 看到这个问题 。

你可以做的一件事就是“好吧,它永远不会是0.7,所以也许我无法判断,但我可以接近 ……

然后,你选择一个粒度,比如百万分之一。 您可以尝试将ie6 * a整数舍入结果与1e6 * 0.7整数舍入结果进行1e6 * 0.7以查看“不是a < 0.7 ?”,但“是合理的,足够接近,小于0.7 ?”

或者,只是比较相同的类型。 正如评论中所说的,也许0.7不是float字面量而是double字面值。 确保它是float文字,确保打印出'a'

 void main() { float a=0.7; if(a<0.7f) printf("c"); else printf("a"); }