2014-05-08 27 views
1

我有下面的代碼:浮點運算結果在一個錯誤的號碼

#include <stdio.h> 
int main() 
{ 
    int hours; 
    float check, phw; 
    printf("How many hours worked?"); 
    scanf(" %d", &hours); 
    printf("How much do you make an hour?"); 
    scanf(" %2f", &phw); 

    check = phw * (float)hours; 
    printf("You have made $%.2f\n", check); 
    return 0; 
} 

當進入

多少工作時間? 24

你一小時多少錢? 7.79

我希望它出來186.96但我得到:

你已經做了$ 168.00

程序退出代碼爲結束:0

我不知道我做錯了什麼,我剛開始學習C,所以任何幫助表示讚賞。

+0

@BlueMoon - 你能解釋一下嗎? – chiccodoro

+0

24 * 7 = 168 24 * 0,79 = 18,96 168 + 18,96 = 186,96 可能你看到你的錯誤,現在 – CodeFanatic

+0

@BlueMoon這是不正確的,只要一個操作數是浮點,表達式將是浮點。將int更改爲float將不會更改此代碼中的任何內容。 –

回答

4
scanf(" %2f", &phw); 

應該被改變成

scanf(" %f", &phw); 

Here是一個工作示例。

+0

+1正確,並有一個很好的例子。 - 你能解釋爲什麼這個修復程序?不是c專家,我​​認爲'scanf(「%2f」,&phw)'將從輸入數字中去掉小數,因爲'%2f'是2位數字的格式,不帶小數。 – chiccodoro

+0

這很完美!謝謝。與Rikayan Bandyopadhyay的解釋一起,我明白我做錯了什麼。 – MrEMB

2

scanf(" %2f", &phw);最多讀取兩個字符。所以7.79讀爲7.

更改爲scanf(" %4f", &phw);scanf(" %f", &phw);

this以供參考。

+0

非常有幫助。謝謝。 – MrEMB

+0

'scanf'提供了很多可供選擇的選項。你可以看到我提供的鏈接。無論如何,歡迎來到這個網站。 –