int n = 5;
int quorum = Math.Floor(n/2) + 1;
我期待法定人數具有值3。但是,這是我在VisualStudio中得到的錯誤方法或屬性之間曖昧:在C#.NET
的調用是以下的方法或模棱兩可之間屬性:'System.Math.Floor(double)'和'System.Math.Floor(decimal)'
如何更正它?我哪裏做錯了?
int n = 5;
int quorum = Math.Floor(n/2) + 1;
我期待法定人數具有值3。但是,這是我在VisualStudio中得到的錯誤方法或屬性之間曖昧:在C#.NET
的調用是以下的方法或模棱兩可之間屬性:'System.Math.Floor(double)'和'System.Math.Floor(decimal)'
如何更正它?我哪裏做錯了?
您無需使用Math.Floor
。因爲所有的術語都是整數,.NET將執行整數除法,它會自動截斷輸出的其餘部分。
至於你爲什麼得到錯誤,如上所述,整數除法的結果仍然是一個整數。因爲你不能設置一個整數(沒有小數部分要捨去),所以Floor
不會超過int
。該調用必須首先將結果轉換爲decimal
或double
,編譯器不知道您想要哪一個(實際上哪一個都不是)。
N/2是一個整數除法 - 這樣的結果是整數 - 事實上也沒有必要做Math.Floor()
在這裏所有的 - 只是在做
int quorum = n/2 + 1;
將產生3
預期的結果。
除以2.0以確保生成的數字是雙倍數。當給出Math.Floor(double)或Math.Floor(decimal)之間的選擇時,n/2本身並不告訴編譯器將其投射到什麼位置。
int n = 5;
int quorum = (int)Math.Floor(n/2.0) + 1;
Floor方法只接受雙精度和十進制值,但是int自動適合它們兩個。你可以使用從int強制轉換爲十進制或雙然後回到詮釋這樣的:
int n = 5;
int quorum = (int)Math.Floor((decimal)n/2) + 1;
OR
int n = 5;
int quorum = (int)Math.Floor((double)n/2) + 1;
2個演員和一個地板?這很愚蠢。整數部門消除任何必要施放或地板。 -1 – spender 2012-04-13 01:08:05
他問了。有些人只是想了解事情的運作方式,而不是一開始就以正確的方式進行。我幾乎可以肯定,clewaks知道如何使它沒有地板。當然,那只是我的看法。 – 2012-04-13 08:14:57
你甚至嘗試運行這段代碼?它壞了。 – spender 2012-04-13 01:09:29
不,我沒有嘗試代碼。我已經糾正了錯誤 - 它必須與Floor的返回值相關,而不是用法。 – brianestey 2012-04-13 07:27:59