#6909: 一元二次方程式


kingtommy (芋頭)


#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main(void)
{
    int a,b,c;
    int sum1=0,sum2=0;
    while(scanf("%d %d %d",&a,&b,&c) !=EOF)
    {
            sum1=(-b+sqrt(b*b-4*a*c))/(2*a);
            sum2=(-b-sqrt(b*b-4*a*c))/(2*a);
            if(b*b-4*a*c>0)
            {
                printf("Two different roots x1=%d , x2=%d \n",sum1,sum2);
                
            }
            else if(b*b-4*a*c == 0 )
                printf("Two same roots x=%d \n",sum1);    
                
            else
                printf("No real root \n");
    }
    
    
return 0;
}

 

我的疑問在上面紅色地方 變數sum1 sum2令為double時候

結果會是錯誤的

但是令為int時候答案會正確

有人可以幫我解答錯在哪嗎? 謝謝