我有以下十进制数
string number = "60.9";
Response.Write(Convert.ToDecimal(number).ToString("#,0")); // prints 61
我想将值格式化为 99,999,999...但如果该值有小数点,则会向上舍入
请告诉我如何打印 60.9,而不是具有相同数字格式的 61
您可以使用
N
格式。这将显示带有您所在区域设置的组分隔符的数字(例如,对于美国区域设置,,
,尽管您可以选择影响它),并保留小数部分不变:
Convert.ToDecimal(number).ToString("N")
更新。经过评论中的一些讨论,满足所有要求的方法似乎是
Convert.ToDecimal(number).ToString("#,#.##########", CultureInfo.InvariantCulture)
向乔恩致敬。
自定义(不是最好的,但有效)解决方案:
public static string FormatDecimal(string value, bool addSign = true, bool showDecimals = true)
{
if (value == null)
{ return ""; }
var r = value.Replace("$", "");
if (showDecimals)
{
r = Convert.ToDecimal(r).ToString("C").Replace("$", "");
}
else
{
var newFormat= "";
r = Convert.ToDecimal(r).ToString("C").Replace(".00", "").Replace("$", "");
for (int i = 0; i < r.Length; i++)
{
if (r[i] == '.')
{
break;
}
newFormat += r[i];
}
r = newFormat;
}
if (addSign)
{
r = "RD$" + r;
}
return r;
}