将小数四舍五入到小数点后两位

Rounding decimal number upto two decimal places

我正在尝试将小数四舍五入到小数点后两位,效果很好。 我正在做如下:

Math.Round(Amount, 2)

因此,如果我的金额为 40000.4567,我将得到 40000.46,这正是我想要的。 现在的问题是我有像 40000.0000 这样的小数,当我四舍五入时,结果是 40000,而我真正想要的是 40000.00。所以 round 总是会忽略尾随的零。

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

我也试过

Decimal.Round(Amount, 2)

现在一种方法是检查数字是否包含任何小数部分并相应地使用 round 函数,但这确实是一种糟糕的方法。 由于与金额相关的明显原因,我也不能使用 truncate。

周围的路是什么?

正确舍入,但您未能理解不是格式。 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);

您可以阅读更多关于 custom numeric format strings in 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);