[問題] 一元二次方程式

看板C_and_CPP (C/C++)作者 (芋頭)時間13年前 (2012/08/16 16:14), 編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
#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時候答案會正確 有人可以幫我解答錯在哪嗎? 謝謝 一開始在猜是因為abc另為int 結果兩個令成double也是不行 程式的底子很淺 現在想要回來再練練 發現通通幾乎忘光光@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.161.184

08/16 16:24, , 1F
你用 %d 去印 double 了....
08/16 16:24, 1F

08/16 16:30, , 2F
原來就這樣@@ 害我想好久...謝謝拉!!!
08/16 16:30, 2F

08/16 16:34, , 3F
以前學校教c++沒用過c真是常常容易出錯@@
08/16 16:34, 3F

08/16 18:13, , 4F
題外話,浮點數最好不要作等式判斷
08/16 18:13, 4F

08/16 19:40, , 5F
11戒
08/16 19:40, 5F

08/16 22:19, , 6F
好 我會記起來 11戒是啥??
08/16 22:19, 6F

08/16 22:27, , 7F
置底有一篇文,發文前務必閱讀...
08/16 22:27, 7F

08/16 22:29, , 8F
喔喔 好抱歉 我知道了
08/16 22:29, 8F

08/17 02:35, , 9F
你好雷喔
08/17 02:35, 9F
文章代碼(AID): #1GBAlWEZ (C_and_CPP)
文章代碼(AID): #1GBAlWEZ (C_and_CPP)