使用c#设置自动计算数字的比例和精度

时间:2017-04-27 11:41:31

标签: c# number-formatting decimalformat

我有一种方法可根据用户输入自动计算金额。 我的要求是将该数字的比例设置为4。 E.G如果金额为49,则应返回49.0000。如果金额为49.2412412414,则应返回49.2412。我使用过Math.Round(),但它不能用于例如1.即它无法将49转换为49.0000。我的示例代码:

    private decimal getAmount(decimal rate)
    {
        decimal Amount = 0;
        Amount = 12 * rate;
        return Math.Round(Amount, 4);
    }

2 个答案:

答案 0 :(得分:1)

您可以将金额乘以1.0000M以获得所需的结果。你的代码就像:

private decimal getAmount(decimal rate)
{
    decimal Amount = 0;
    Amount = 12 * rate;
    Amount *= 1.0000M;
    return Math.Round(Amount, 4);
}

但是,如MSDN中所述:

  

尾随零不会影响中十进制数的值   算术或比较操作。但是,尾随零可能   如果适当的格式字符串是,则由ToString方法显示   的应用

因此,49实际上等于49.0000,但是如果你想要一个字符串表示值,你可以将你的函数改为:

private static string  getAmount(decimal rate)
{
    decimal Amount = 0;
    Amount = 12 * rate;
    return Amount.ToString("#.0000", CultureInfo.InvariantCulture);
}

答案 1 :(得分:1)

您必须区分数字重复表示和字符串表示。 decimal将忽略任何尾随零。但是,如果将小数转换为string,则可以强制显示尾随零。

decimal amount = 49.0M;
var rounded = Math.Round(amount, 4);
string display = rounded.ToString("#.0000", CultureInfo.InvariantCulture); // "49.0000"