Проект знову підняв проблему похибки обчислень. Ось текст ядра програми (з дійсними коефіцієнтами рівняння):
void Button1Click(object sender, EventArgs e)
{
double a,b,c,x1,x2;
try
{
a=double.Parse (A.Text);
b=double.Parse (B.Text);
c=double.Parse (C.Text);
x1=double.Parse (X1.Text);
x2=double.Parse (X2.Text);
if (a*x1*x1+b*x1+c==0) R1.Text = "ПРАВИЛЬНО";
else R1.Text = "НЕПРАВИЛЬНО";
if (a*x2*x2+b*x2+c==0) R2.Text = "ПРАВИЛЬНО";
else R2.Text = "НЕПРАВИЛЬНО";
A.Enabled=B.Enabled=C.Enabled=X1.Enabled=X2.Enabled=false;
}
catch
{
}
}
Рівняння з коефіцієнтами 25; -70; 13 має корені 0,2 і 2,6. Програма з цим погоджується. При коефіцієнтах 2,5; -7; 1,3 - корені, звичайно, такі ж самі. Але другий з них програм "забраковує". Як "правильно" писати програми для обчислень з дійсними числами?