浮点值的输出有什么不同?

时间:2013-09-20 09:13:07

标签: c

#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;'的优先级运算符不仅仅是'='运算符

2 个答案:

答案 0 :(得分:13)

0.7无法准确表示为float值,因此a存储了一些近似值。这里的问题是文字0.7具有类型double,因此使用更精确的近似值0.7来表示它。这种近似可能与两个方向上不太精确的近似不同。

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

答案 1 :(得分:0)

你基本上处理0.1是二进制重复小数的事实。所以看起来的东西很好而且干净,因为文字(即0.7)无法准确表示。与此类似,您可以使用混合类型,因为文字0.7double