我遇到的問題與下面的代碼:C++二次代碼錯誤
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
int main()
{
ifstream fin("input.txt");
ofstream fout("output.txt");
float discriminant, A, B, C, root1, root2;
fin >> A >> B >> C;
while (A != -99)
{
discriminant = (pow(B, 2.0) - 4 * A*C);
if (A == 0)
{
fout << A << "\t" << B << "\t" << C << "\t" << root1 << "\t" << root2 << endl;
}
else if (discriminant > 0)
{
root1 = (-B - sqrt(discriminant))/(2.0*A);
root2 = (-B + sqrt(discriminant))/(2.0*A);
fout << A << "\t" << B << "\t" << C << "\t" << root1 << "\t" << root2 << endl;
}
else if (discriminant == 0)
{
fout << A << "\t" << B << "\t" << C << "\t" << root1 << "\t" << root2 << endl;
}
else
{
fout << A << "\t" << B << "\t" << C << "\t" << root1 << "\t" << root2 << endl;
}
fin >> A >> B >> C;
}
fout.close();
ifstream fin2("output.txt");
fin2 >> A >> B >> C >> root1 >> root2;
while (!fin2.eof())
{
cout << A << "\t" << B << "\t" << C << "\t" << root1 << "\t" << root2 << endl;
fin2 >> A >> B >> C >> root1 >> root2;
}
cout << endl;
cout << "Coded by Paye W. Kialain" << "\t"<< endl;
system("pause");
return 0;
}
在項目描述中,有人告訴我,創建一個包含,b和c,我做到了輸入文件。輸出格式也是正確的。它是一個顯示a,b和c值以及2個計算出的根的表格。然而,根的計算似乎是關閉的。我的if語句是否是這個問題?
也許你可以告訴我們什麼輸入會給出什麼錯誤的輸出。 –
輸入是: 6 -10 -4 但輸出似乎是: 6 -10 -4 -0.333333 2 2 6 9 - 0.333333 2 2 4 8 -0.333333 2 0 2 4 -0.333333 2 2 4 2 2 -0.333333 通過佩耶W. Kialain 按編碼任意鍵繼續。 。 。 –
一些最新出現錯誤的細節:[爲什麼浮點數不準確?](http://stackoverflow.com/questions/21895756/why-are-floating-point-numbers-incucurate) – user4581301