C++ Int returns 与 Atom 中相同输入的 double 不同的值

C++ Int returns different value than double for same input in Atom

我正在做求解二次方程的算法。

我输入 A = 4,B = 10,C = 4,这给出了 delta 的值 36。

我的问题是

int delta;

returns 值为 35,并且

double delta;

returns 值为 36。

我正在使用 Atom 文本编辑器,其余代码如下。

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
  int a,b,c;
  int delta;
  int x1, x2;
  cout << "Rownanie kwadratowe w postaci ax^2 + bx + c = 0" << endl;
  cout << "Podaj wartosc A" << endl;
  cin >> a;
  cout << "Podaj wartosc B" << endl;
  cin >> b;
  cout << "Podaj wartosc C" << endl;
  cin >> c;
  delta = pow(b,2) - (4 * a * c);
  cout << "Delta = " << delta << endl;
  return 0;
}

对我有用。对于 Minimum 示例,下面的代码更短更好,不是吗?

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
  int a = 4, b = 10, c = 4;
  int delta = pow(b,2) - (4 * a * c);
  cout << "Delta = " << delta << endl;
  return 0;
}

如果您使用整数运算,则使用整数而不是浮点运算。问题由浮动组成。 pow(b, 2) 的结果可能类似于 99.99999999997,四舍五入为 int 是 99

#include <iostream>

using namespace std;

int main()
{
  int a = 4, b = 10, c = 4;
  int delta = b * b - (4 * a * c);
  cout << "Delta = " << delta << endl;
  return 0;
}