与浮点比较的问题

Issue with comparison with floating point

#include<stdio.h>
int main(void){
    float a = 0.7;
    if(a<0.7)
        printf("C");
    else
        printf("c++");
}

我正在阅读一本印度作者的教科书来测试你的 c 技能。我在浮点问题章节中发现了这个问题。我正在比较 (0.7<0.7) 这是错误的。那么为什么输出是 c 而不是 c++.

说明: 0.7 是双常数(默认值)。它的二进制值为 用 64 位编写。 二进制值 0.7 = (0.1011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011) 现在这里变量 a 是一个浮点变量,而 0.7 是双常数。所以变量 a 将只包含 32 位值即

a = 0.1011 0011 0011 0011 0011 0011 0011 0011 
while
0.7 = 0.1011 0011 0011 0011 0011 0011 0011 0011 0011
0011 0011....

很明显 < 0.7