C# 将一个数字去掉末尾无效的0后展示(举例:500.0000 变成500)
场景:
最近在写代码的时候遇到提示语金额后面无效0过多的问题,比如
用户输入金额:500元,
因为数据库是有对于decimal有限制的[Column(TypeName = "numeric(18,6)")],小数位可以达到6位
则保存到数据库保存之后变成了500.000000。
提示语:变动金额不能超过500元
变动金额不能超过[从数据库中拿到的金额]元
实际上提示语变成了:变动金额不能超过500.000000元
提示语中这样子的金额看着确实有点不太友好,所以建议在提示语中直接将小数位末尾后无效的0去掉。
我也看了大多数建议的方案是:保留N位小数,去掉N未小数之后的0,
但是这样子容易弄掉精准数据:比如500.001000,保留N位小数,去掉末尾的0,
比如保留2位小数变成了:500.00 ,和实际的500.001 就有差异了,无法确认第几位小数是有效值,此方案在我使用的场景中是不可取的。
我想要达到的效果:
经过试验,归纳出以下代码:

/// <summary> ///去掉小数位后面的无效的0/// </summary> /// <param name="num"></param> /// <returns></returns> public static string TrimEndZero(decimalnum)
{if (num == 0) return "0";decimalfloorNumber;if (num < 0)
{//负数部分 floorNumber =Math.Ceiling(num);
}else{//非负数部分 floorNumber =Math.Floor(num);
}var diff = num - floorNumber; //得到0.几的小数 if (diff == 0)
{//是一个整数 return num.ToString("#");
}else{//是小数 return num.ToString().TrimEnd('0');
}
}
View Code
==========================================以下是园友们推荐的写法===================================
评论区园友们推荐了很多简易的写法,大家可以去翻阅看看,找一个最适合的写法