int c;
int f = 20;
c = 5/9 * (f - 32);
Console.WriteLine(c);
Console.ReadLine();
如果我運行此代碼c結束爲0,這是錯誤的。誰能告訴我爲什麼?值不正確答案
int c;
int f = 20;
c = 5/9 * (f - 32);
Console.WriteLine(c);
Console.ReadLine();
如果我運行此代碼c結束爲0,這是錯誤的。誰能告訴我爲什麼?值不正確答案
因爲您的計算是在整型中完成的。我相信c
是雙重型變量。
c = 5d/9 * (f - 32.0);
使用32.0
或32d
所以操作數的一個是double
,也在做同樣爲5/9
。
另外您需要將c
定義爲雙倍。
問題出在下面一行;
5/9
因爲c和f是整數。例如,如果我要求你將11到10分;你會告訴我結果是1.1。假設你不知道浮點運算,那麼你會說要麼不可能將11到10;或者你會說它是1.運行時環境不變,它說它是0,因爲你聲明瞭一個整數。
@lazyberezovsky你是正確的某一點;在這種情況下將f聲明爲整數。但不可能將c定義爲int,將f定義爲double。因此,如果兩者都被聲明爲整數,即使f被移除,結果仍然是0。 – daryal
Habib已經解釋了正在發生的事情。如果您不想將c
更改爲浮點型或雙精度型,請執行以下操作:
c = (int)Math.Round(5.0/9.0 * (f - 32.0));
'5/9'仍然爲零。 – Rawling
@Rawling,在你評論之前編輯:D – Habib
實際上,你正在將'Double'結果放到這裏,並將其放入c中,該c被聲明爲'int'。截斷將發生並且問題將會返回。 – Oren