[英]Format decimal number with custom amount of digits after comma
我有此自定义扩展名,该格式应格式化逗号后带有自定义位数的十进制数字。
public static decimal FormatDecimal(this decimal value, int decimalSeparator = 2)
{
decimal returnValue = Math.Round(value, decimalSeparator, MidpointRounding.AwayFromZero);
return returnValue;
}
问题是,它不能按预期工作。
如果我这样做:
decimal number = 12345;
接着:
decimal formatedNumber = number.FormatDecimal(2);
结果应该是:
12345.00
相反,结果是:
12345
我做错了什么?
我认为正确的方法是使用"0"
自定义格式说明符 ;
如果存在一个数字,则将零替换为相应的数字; 否则,结果字符串中将出现零。
例如;
decimal d = 12345;
Console.WriteLine(d.ToString("#.00")); // 12345.00
这是扩展功能的工作
public static string FormatDecimal(this decimal value, int decimalSeparator = 2)
{
return value.ToString(string.Format("0.{0}", new string('0', decimalSeparator)));
}
您可能正在寻找格式化小数点的字符串表示形式的方法。 尝试这个:
decimal myNumber = 12345.67m;
string formattedNumber = myNumber.ToString("N3");
Console.WriteLine(formattedNumber); // Prints "12345.670"
请参阅此处以获取更多信息: https : //msdn.microsoft.com/zh-cn/library/dwhawy9k%28v=vs.110%29.aspx
从MSDN:
标准数字格式字符串用于格式化常用数字类型。 标准数字格式字符串的格式为Axx,其中:
A是称为格式说明符的单个字母字符。 任何包含多个字母字符(包括空格)的数字格式字符串都将解释为自定义数字格式字符串。 有关更多信息,请参见自定义数字格式字符串。
xx是称为精度说明符的可选整数。 精度说明符的范围是0到99,并且会影响结果中的位数。 请注意,精度说明符控制数字的字符串表示形式中的位数。 它不会舍入数字本身。 要执行舍入运算,请使用Math.Ceiling,Math.Floor或Math.Round方法。
当精度说明符控制结果字符串中的小数位数时,结果字符串将反映四舍五入为零的数字(即使用MidpointRounding.AwayFromZero)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.