2011-01-14 33 views
6

有小數量,要修剪到小數點後2位(如果存在)有小數量,要修剪到小數點後2位(如果存在)

+0

你想只是「砍掉多餘的小數「,或者你想像喬恩所說的那樣輪迴? – 2011-01-14 19:29:16

+1

截斷還是舍入?截斷請參閱:http://stackoverflow.com/questions/329957/truncate-decimal-number-not-round-off – SwDevMan81 2011-01-14 19:31:26

回答

16

您是否嘗試過使用value = Decimal.Round(value, 2)

例如:

using System; 

class Test 
{  
    static void Main() 
    { 
     decimal d = 1234.5678m; 
     Console.WriteLine("Before: {0}", d); // Prints 1234.5678 
     d = decimal.Round(d, 2); 
     Console.WriteLine("After: {0}", d); // Prints 1234.57 
    } 
} 

注意,這是四捨五入而不僅僅是微調(所以在這裏它四捨五入)......你到底需要什麼? Decimal結構支持你需要做的任何事情。有關更多選項,請諮詢MSDN

+0

Math.Round可以做銀行家的四捨五入。 http://msdn.microsoft.com/en-us/library/ms131275.aspx – 2011-01-15 19:18:24

8
decimal.Truncate(myDecimal * 100)/100 

這會切掉前兩個小數位後的所有內容。四捨五入看Jon的答案。

0

這應該工作(編輯:固定刪除四捨五入):

((Int32)(value * Math.Pow(10, decimalPlaces)))/(Math.Pow(10D, decimalPlaces)); 
1

如果它只是用於顯示目的,你可以使用:

Console.Out.WriteLine("Number is: {0:F2}", myDecimalNumber);