如何编写C#格式字符串:整数无小数显示,小数强制保留两位含末尾零?
解决方案
C#没有单一的标准格式字符串能直接实现该需求,但可以通过条件判断+双格式组合达成目标:
核心逻辑是先判断数值是否为整数(小数部分为0),再分别应用对应格式:
- 若为整数,使用仅显示整数的格式(如
# ###0或N0); - 若含有效小数部分,使用强制显示两位小数的格式(如
# ###0.00或N2)。
示例代码
针对double类型:
double value = 123.400; string displayText = value % 1 == 0 ? value.ToString("# ###0") : value.ToString("# ###0.00");
针对精度更高的decimal类型(更适合价格场景):
decimal value = 123.400m; string displayText = decimal.Remainder(value, 1) == 0 ? value.ToString("# ###0") : value.ToString("# ###0.00");
场景验证
| 输入值 | 输出结果 |
|---|---|
| 0.000 | 0 |
| 123.000 | 123 |
| 123.456 | 123.46 |
| 123.400 | 123.40 |
批量场景优化
如果是表格批量处理,可封装成扩展方法复用:
public static class NumericExtensions { public static string ToSmartPriceString(this double number) { return number % 1 == 0 ? number.ToString("# ###0") : number.ToString("# ###0.00"); } public static string ToSmartPriceString(this decimal number) { return decimal.Remainder(number, 1) == 0 ? number.ToString("# ###0") : number.ToString("# ###0.00"); } }
调用时直接使用value.ToSmartPriceString()即可。
内容的提问来源于stack exchange,提问作者pepr
相关产品推荐
相关产品推荐

