2
#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,因为 '<' 运算符的优先级高于 '=' 运算符

4

2 回答 2

13

0.7 不能精确地表示为一个float值,因此a存储它的一些近似值。这里的问题是文字 0.7 具有 type double,因此使用更精确的 0.7 近似值来表示它。该近似值可能与任一方向上不太精确的近似值不同。

要修复,请使用double变量或float文字0.7f

于 2013-09-20T09:24:02.320 回答
0

0.1您基本上处理的是二进制重复十进制的事实。因此,像文字(即 )那样看起来又漂亮又干净的东西0.7不能被准确地表示。再加上你正在混合类型,因为文字0.7double.

于 2013-09-20T09:24:33.997 回答