舍入十进制数最多两位小数

我试图将十进制数舍入到小数点后两位,这是完美的。 我这样做:

Math.Round(Amount, 2) 

所以,如果我的金额为40000.4567 ,那么我得到的是40000.46 ,这正是我想要的。 现在问题是我有四进制数,如40000.0000 ,当我绕它,结果是40000 ,我真正想要的是40000.00 。 所以round总是会忽略尾随的零。

为了解决这个问题,我可以选择将其转换为字符串并使用格式,但我不想这样做,因为效率低下,我相信必须有一些方法可以做得更好。

我也尝试过类似的东西

 Decimal.Round(Amount, 2) 

现在一种方法是检查数字是否包含小数部分中的任何内容并相应地使用舍入函数,但这是非常糟糕的方法。 我也不能使用截断,因为这与数量有关的明显原因。

怎么回事?

它正确舍入但您无法理解该不是格式。 两个值4000040000.00之间没有区别 ,并且您将遇到与3.1类似的问题。

只需使用格式输出您有两位小数的数字,例如:

 Console.WriteLine(String.Format("{0:0.00}", value)); 

要么:

 Console.WriteLine(value.ToString("0.00")); 

你混合了两件事 – 舍入和输出格式。 为了以您想要的格式输出数字,您可以使用函数string.Format以及所需的格式,例如:

 decimal number = 1234.567m; string.Format("{0:#.00}", number); 

您可以在MSDN中阅读有关自定义数字格式字符串的更多信息

我认为你要找的是显示两位小数,即使它们为零。 你可以使用string.Format(我也将它与Round结合使用):

 Console.WriteLine(string.Format("{0:0.00}", Math.Round(Amount, 2)); 

对于舍入十进制数,您可以使用

 decimal number=200.5555m; number= Math.Round(number, 2); string numString= string.Format("{0:0.00}", number);