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"); }