[語法] 此種情況下 一定要用浮點數作為變數類型嗎

看板C_and_CPP (C/C++)作者時間16年前 (2009/09/11 11:12), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/1
底下是一個簡單的輸出入控制的練習 我是個自學的新手 雖然基本的語法沒有問題 但還是有點小地方不太懂想請教m(_ _)m ============================================================================== 科目A的成績(data1) 跟科目B的成績(data2) 都是整數值 但取平均之後 有可能是小數 如果我一開始就宣告data1 和data2 是int 最後才取平均值是浮點數 (設定平均值是小數點一位) 則跑出來的平均值是零 無法顯示正確的答案 orz 可以請教一下是為什麼嗎||| 對應程式碼見下 int data1; int data2; printf("請輸入科目A的成績:"); scanf("%d",&data1); printf("請輸入科目B的成績:"); scanf("%d",&data2); printf("統計中.................\n"); printf(" 科目A的成績:%d\n", data1); printf(" 科目B的成績:%d\n", data2); printf("-----------------\n"); printf(" 總分:%d\n", data1+data2); printf(" 平均:%.1f\n", (data1+data2)/2); ============================================================================== 又如果我一開始就宣告data1 和data2 是float 那麼雖然可以很順利正確地跑出平均值的結果 但data1 和data2的位數 會由於預設的關係而是六位 (ex:85.000000 ) 如果要讓data1 和data2顯示出來的只是整數 沒有小數點後面的那堆0 就要使用.prec參數來控制 變得又有點麻煩||| 對應程式碼見下: float data1; float data2; printf("請輸入科目A的成績:"); scanf("%f",&data1); printf("請輸入科目B的成績:"); scanf("%f",&data2); printf("統計中.................\n"); printf(" 科目A的成績:%.0f\n", data1); printf(" 科目B的成績:%.0f\n", data2); printf("-----------------\n"); printf(" 總分:%.0f\n", data1+data2+data3); printf(" 平均:%.1f\n", (data1+data2+data3)/3); ============================================================================== 所以我想請問 有可以一開始就宣告data1 data2是int 然後又能使平均值是正確算出結果 的寫法嗎 感謝

09/11 11:16, , 1F
使用過程cast成double (double)data1
09/11 11:16, 1F

09/11 11:26, , 2F
不好意思||| 可以請N版友說得再詳細一點嗎|||
09/11 11:26, 2F
※ 編輯: bookticket 來自: 140.119.143.103 (09/11 11:26)

09/11 11:28, , 3F
printf("\t平均:%.1f\n",(float)(data1+data2)/2);可以顯示
09/11 11:28, 3F

09/11 11:33, , 4F
感謝s版友~~~m(_ _)m
09/11 11:33, 4F
文章代碼(AID): #1AgS0ohz (C_and_CPP)
文章代碼(AID): #1AgS0ohz (C_and_CPP)