转换为整数
我已经按照对二次方程转换为整数
#include <iostream>
#include <math.h>
using namespace std;
int main(){
float x,x1;
x=0;x1=0;
int a=1;
int b;
int c;
cout<<"enter the second term:"<<endl;
cin>>b;
cout<<"enter the third term:";
cin>>c;
float d=b^2-4*a*c;
if (d<0){
cout<<"the equation has not real solution :"<<endl;
}
else if (d==0) { x=(-b/2); x1=x;}
else
{
x=(-b+sqrt(d))/2;x1=(-b-sqrt(d))/2;
}
cout<<"roots are :"<<x<< " "<<x1<< " "<<endl;
return 0;
}
的计算根simpled算法,但它给我警告
arning C4244: '=' : conversion from 'int' to 'float', possible loss of data
,当我进入-6和9它给出了根是6和零当然是不正确的请帮助我
^
是按位异或运算符,而不是权力,因为你可能认为。要将号码提高到任意功率,请使用std::pow
(来自标准标头cmath
)。对于两个幂,你可以使用x * x
。
uii我看到我忘了谢谢@Konrad Rudolph –
b^2表示使用XOR运算符,我不认为这是您的意思。尝试使用b * b。另外,将a,b和c声明为浮动而不是整数可能会有所帮助。
除了在XOR运算
你不能做对INT所有的计算,然后将它转换为float正确的言论。这样div的结果是四舍五入的。尝试在计算过程中抛出b(float)b。或者将所有a,b,c和d定义为浮点数
这不会对你的想法有帮助。极大的整数不能用浮点数精确表示(32位整数 - > 23位小数表示精度下降)。最好只使用双。 – riwalk
^是一个按位异或运算符,即编译器为什么给出warning.Try使用math.h头文件中声明的pow函数。
处理你的变量名!什么是X? X1?一个? B' C? d?哦。我的。神。此外,正确的缩进。那里有什么空行? –
@Konrad Rudolph,我会说在这种情况下,它是可以的,因为它显然是按照惯例使用这些字母的二次公式 –
@Konrad它们是二次方程中的变量。 –