我试图在C#中格式化一个double,它使用千位分隔符,并添加最多4位小数的数字.
这是直截了当的,除非我不想要小数点,如果它是一个整数.有没有办法使用自定义数字格式字符串而不是tenary运算符的if语句?
目前我有:
string output = dbl.ToString(dbl == (int)dbl ? "#,##0" : "#,##0.####");
Run Code Online (Sandbox Code Playgroud)
谢谢
我相信你的第二个格式字符串"#,## 0.##"应该正是你想要的 - #format字符是一个不会显示零的占位符.
如果你有"#,###.00"那么你会得到尾随零.
测试代码:
double d = 45.00;
Console.Writeline(d.ToString("#,##0.##"));
Run Code Online (Sandbox Code Playgroud)
输出"45".将d设置为45.45会产生输出"45.45",听起来就像你所追求的那样.
毕竟你得到了答案!;)
顺便提一下,在http://john-sheehan.com/blog/net-cheat-sheets/上有一个方便的格式字符串备忘单(以及其他方便的备忘单)
不,没有任何内置格式字符串.您当前的解决方案是实现此目标的最佳方式.
MSDN列出了标准数字格式字符串和自定义数字格式字符串,因此您应该能够自己看到没有一个直接符合您的需求.