我正在做解决二次方程的算法。
我输入A = 4,B = 10,C = 4,其中delta值为36。
我的问题是
int delta;
返回值35,
double delta;
返回值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;
}
答案 0 :(得分:0)
它对我有用。对于最小例子,Bellow代码更短更好,不是吗?
#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
,向下舍入到整数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;
}
答案 1 :(得分:0)
double pow(double x,double y)是幂的默认语法 所以你只能使用浮点作为基础和力量。
所以你必须使用base作为浮点