我有一种方法可根据用户输入自动计算金额。 我的要求是将该数字的比例设置为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);
}
答案 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"