[問題] 二元一次方程式判斷求解
遇到的問題(Question):
輸出的結果跟答案差太多
餵入的資料(Input):
1 3 -10
希望的正確結果(Expected Output):
Two different roots x1=2 , x2=-5
跑出來的錯誤結果(Wrong Output):
Two different roots x1=1.949747 , x2=-7.949747
開發平台(Platform): (例: VC++, Gcc, OpenGL, Linux, ...)
Dev C++
程式碼(Code): (請善用置底文標色功能)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
double a,b,c,x,y;
while(scanf("%lf %lf %lf",&a,&b,&c)!=EOF)
{
x=(b*b)-(4*a*c);
if(x>0)
{
x=(-b)+sqrt(((b*b)-(4*a*c))/(2*a));
y=(-b)-sqrt(((b*b)-(4*a*c))/(2*a));
if(x<y)
printf("Two different roots x1=%lf , x2=%lf\n",y,x);
else
printf("Two different roots x1=%lf , x2=%lf\n",x,y);
}else if(x==0)
{
printf("Two same roots x=%.0lf\n",(-b)/(2*a));
}else
{
printf("No real root \n");
}
}
return 0;
}
補充說明(Supplement):
x1的輸出雖然有誤差但尚可接受
不過x2真的是差太多了
請問有可能是在計算過程中精準度遺失導致這樣嗎?
還是說我有哪裡寫錯了?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.119.126.2
→
12/08 23:36, , 1F
12/08 23:36, 1F
→
12/08 23:40, , 2F
12/08 23:40, 2F
→
12/08 23:43, , 3F
12/08 23:43, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章