作者bookticket ()
看板C_and_CPP
標題[語法] 此種情況下 一定要用浮點數作為變數類型嗎
時間Fri Sep 11 11:12:49 2009
底下是一個簡單的輸出入控制的練習
我是個自學的新手 雖然基本的語法沒有問題 但還是有點小地方不太懂想請教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
然後又能使平均值是正確算出結果
的寫法嗎 感謝
→ NDark:使用過程cast成double (double)data1 09/11 11:16
→ bookticket:不好意思||| 可以請N版友說得再詳細一點嗎||| 09/11 11:26
※ 編輯: bookticket 來自: 140.119.143.103 (09/11 11:26)
→ s80773:printf("\t平均:%.1f\n",(float)(data1+data2)/2);可以顯示 09/11 11:28
→ bookticket:感謝s版友~~~m(_ _)m 09/11 11:33