2016-01-15 101 views
-3
itog = first/second/third; 

所有變量都是int。舍入算術表達式

我該如何繞過boxTotal而不是使所有變量加倍?

+0

如果你正在試圖做的分裂,那麼你真的不應該使用整數所有安韋 – Sayse

+0

你的問題似乎有點我不清楚。您能否創建一個[最小化,完整和可驗證示例](http://stackoverflow.com/help/mcve)至少包含您的值和預期結果? –

回答

0

當他們都是整數時,你不能這樣做。至少其中一人必須是雙人或浮動的。要舍入到最接近的整數,您可以使用Math.Ceiling(value),但是您必須將括號中的內容作爲十進制進行轉換,並將結果作爲整型進行轉換。 例子:

int result = (int)Math.Ceiling((decimal)yourExpression); 
+1

對不起,它應該是你的表達。謝謝你,@SamiKuhmonen –

0

如果你不想投全部翻番然後

itlog = (int)Math.Ceiling(first/(double)second/third); 

可能會工作,雖然我沒有測試它。你需要投出至少一個以加倍其他明智的分裂將是錯誤的。

+0

謝謝,編輯建議。正如我所說,沒有運行代碼。由於某種原因,思維操作將從右到左,現在我認爲它是完全錯誤的:) –

2

兩個數字的典型語言無關實現是(a+(b-1))/b,其中ab是整數。

0

從gudok的回答繼,你可以這樣做:

itog = (first/second +(third - 1))/third;