English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

程式碼:#include #include main(){int a,b,c,e,f;float d; printf("input A:");scanf("%d",&a);printf("input B:");scanf("%d",&b);c=a+b;printf("a+b=%d\\n",c);printf("a-b=%d\\n",a-b); printf("a*b=%d\\n",a*b);d=a/b; printf("a/b= %8.3f\\n",d);    //問題再這一行,我RUN的結果小數點後沒有計算到if (c%2==1)printf("數值a=%d,數值b=%d,相加值是奇數\\n",a,b); elseprintf("數值a=%d,數值b=%d,相加值是偶數\\n",a,b); if(a>=10&&b>=10) printf("數值a=%d,數值b=%d,皆>=10\\n",a,b);else if(a>=10||b>=10) printf("數值a=%d,數值b=%d,其中一個數值>=10\\n",a,b);     system("PAUSE");}問題在於除法的時候沒有計算到小數點後的數字上面有註解那一行請問為什麼會這樣,如何修改THX

2006-11-06 14:21:22 · 2 個解答 · 發問者 ? 3 in 電腦與網際網路 程式設計

2 個解答

因為您用的是整數。把之前那列改成d= (float)a/b;就可以了

2006-11-06 20:17:54 補充:
您寫的是:float = int / int;= 右邊在算時,因為都是 int,所以,用 int 去算。算完,答案是 int;但 = 左邊是 float,所以,會〝自動轉型〞(coercion) 成 float。而算出的答案已是 int,coercion 不會也不能自動把小數生出來!

2006-11-06 20:21:25 補充:
(float) a / b; // 程式師指定轉型 (cast)(float) a 指定把 a 轉型成 float,所以,= 右邊是 float / int。多數 CPU 不能算這東東,所以,(通常) int 數 coercion 成 float,變成了 float / float => 答案是 float因此,答案有了小數,再 assign 給左邊的 float,小數不會遺失。

2006-11-06 15:11:55 · answer #1 · answered by ? 7 · 0 0

d=(float)a/b; 或 d = a/(float)b;

因為 a,b 是 int,在運算時也是用整數的方式計算.這時候要手動轉換型別.

2006-11-06 15:10:37 · answer #2 · answered by 鳳琳 5 · 0 0

fedest.com, questions and answers