自定义数字格式字符串:动态小数点

JDu*_*ley 3 .net c#

我试图在C#中格式化一个double,它使用千位分隔符,并添加最多4位小数的数字.

这是直截了当的,除非我不想要小数点,如果它是一个整数.有没有办法使用自定义数字格式字符串而不是tenary运算符的if语句?

目前我有:

string output = dbl.ToString(dbl == (int)dbl ? "#,##0" : "#,##0.####");
Run Code Online (Sandbox Code Playgroud)

谢谢

Dr *_*bie 8

我相信你的第二个格式字符串"#,## 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/上有一个方便的格式字符串备忘单(以及其他方便的备忘单)


Nol*_*rin 7

不,没有任何内置格式字符串.您当前的解决方案是实现此目标的最佳方式.

MSDN列出了标准数字格式字符串自定义数字格式字符串,因此您应该能够自己看到没有一个直接符合您的需求.

  • 这是不正确的.OP的第二个格式字符串,`#,## 0.####`,完全符合他们的要求. (4认同)