C++ “为什么要打印此程序”;是”;作为输出?

C++ “为什么要打印此程序”;是”;作为输出?,c++,C++,我只是在玩弄数据类型,陷入了这个两难境地。 这里有人能给我解释一下原因吗 #include<iostream> using namespace std; int main() { float a= 0.7; if(a < 0.7) cout<<"Yes"; else cout<<"No"; return 0; } #包括 使用名称空间std; int main(){ 浮动a=0.7;

我只是在玩弄数据类型,陷入了这个两难境地。 这里有人能给我解释一下原因吗

#include<iostream>
using namespace std;

int main() {

    float a= 0.7;
    if(a < 0.7)
        cout<<"Yes";
    else
        cout<<"No";
    return 0;
}
#包括
使用名称空间std;
int main(){
浮动a=0.7;
如果(a<0.7)

cout
0.7
没有精确表示为
float
。近似的
float
0.7
double
表示稍微小一点(这是在
if
语句中用作常量时的默认解释)


有关这方面的更多详细信息,请参见注释中关于重复或无数变体的链接问题。

因为0.7不能准确地表示为二进制浮点数。您的“困境”是什么?你展示的代码有什么问题?实际和预期的输出是什么?请把所有这些都放在问题的主体中,标题应该只是主体中问题的简短摘要。如果你还没有,请回答。因此,由于比较变量和所用的值很小,问题可能不是完全重复的刚分配给它。如果(a==0.7f)
它将打印“是”,请尝试将测试更改为
#include<iostream>
using namespace std;
int main(){

    float a= 0.8;
    if(a < 0.8)
    cout<<"Yes";
    else
    cout<<"No";
    return 0;
}