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