2013-05-08 55 views
-3

我'產生小數點,如:如何小數四捨五入爲int在C#

  1. 0.8235294117647058823529411765

  2. 0.1764705882352941176470588235

我想通過10它們相乘然後圍繞它們。如果點之後的第二個數字小於5,則使其爲0。否則,使它1。對於上面的例子,這將是:

  1. 8

  2. 2

結果應該在int放。

+2

所以...'Math.Round(n * 10)'。參考:[Multiplication](http://msdn.microsoft.com/en-CA/library/aa691372%28v=vs.71%29.aspx),[rounding](http://msdn.microsoft.com/zh-cn/ -us /庫/ system.math.round.aspx)。 – Ryan 2013-05-08 02:20:40

+0

這是一個很好的策略,在您提出問題後,請查看「相關」邊欄-----> – 2013-05-08 02:27:26

+0

在問這樣的問題之前,您首先google了一下嗎?我不能投票,因爲我沒有125的聲望,但是一旦我做了,我會投票給它..哈哈! – thunderbird 2013-05-08 02:28:38

回答

2

您可以使用Math.Round()如果你想保持它作爲一個decimal或圓形一定的精度。

decimal dec = 0.8235294117647058823529411765m; 

decimal rounded = Math.Round(dec * 10); // 8m 

decimal roundedToOne = Math.Round(dec * 10, 1); // 8.2m 

僅供參考,一個explicit conversiondecimalint定義這樣你就可以通過轉換成一int

int a = (int)(dec * 10); // 8 

這可能與條件相結合,以圓人數達向下取整和down

decimal num = dec * 10; 
int a = (int)num + (num % 0 < .5m ? 0 : 1); // 8 
+0

這會截斷數字,不是嗎? – Ryan 2013-05-08 02:24:43

+0

真的,我會解決它。 – 2013-05-08 02:26:05