2011-01-14 29 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);