#include <stdio.h>
int main() {
float a = 0.7;
int c;
c = a < 0.7;
printf("%d", c);
}
打印输出为1但是除了0.7,7.7和0.9之外所有情况都打印0,为什么会这样?它也应该是0因为'&lt;'的优先级运算符不仅仅是'='运算符
答案 0 :(得分:13)
0.7无法准确表示为float
值,因此a
存储了一些近似值。这里的问题是文字0.7具有类型double
,因此使用更精确的近似值0.7来表示它。这种近似可能与两个方向上不太精确的近似不同。
要修复此问题,请使用double
变量或float
文字0.7f
。
答案 1 :(得分:0)
你基本上处理0.1
是二进制重复小数的事实。所以看起来的东西很好而且干净,因为文字(即0.7
)无法准确表示。与此类似,您可以使用混合类型,因为文字0.7
是double
。