c ++,如果对双精度值的条件检查给出了意外的输出结果

问题描述 投票:0回答:1
#include <iostream>

using namespace std;

int
main ()
{
  double a = 0.01;
  double b = 45.01 - 45;
  double c = b;

  if (a == c)
    cout << "a is 0.01" << '\n';
  else
    cout << "a is not 0.01" << '\n';

  return 0;
}

运行上面的代码将给出输出“ a不是0.01”而不是“ a是0.01”。我不明白为什么if语句弄乱了a和c的双精度值?在这里为什么和a不等于b和c?我应该怎么做才能得到“ a is 0.01”的期望输出?

c++ if-statement double precision
1个回答
-2
投票

您不能分配一个块数组来调用使用==运算符的现有块。那样做就可以了!

#include <iostream>

using namespace std;

int main ()
{
  double a, b, c;
    a = 0.01;
    b = 45.01 - 45;
    c = b;
    {
  if (a >= c)
      {
        cout << "a is = " << c << '\n';
        }
        if (!(a >= c))
        {
        cout << "a is = " << c << '\n';
        }
    else
        cout << "The Value of C = " << c << '\n';
  return 0;
}
    }
© www.soinside.com 2019 - 2024. All rights reserved.