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

时间:2009-09-10 11:19:37

标签: c# .net

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

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

目前我有:

string output = dbl.ToString(dbl == (int)dbl ? "#,##0" : "#,##0.####");

由于

2 个答案:

答案 0 :(得分:8)

我相信你的第二个格式字符串“#,## 0。##”应该正是你想要的 - #format字符是一个不会显示零的占位符。

如果您有“#,###。00”,那么获得尾随零。

测试代码:

double d = 45.00;
Console.Writeline(d.ToString("#,##0.##"));

输出“45”。将d设置为45.45会产生输出“45.45”,这听起来就像你所追求的那样。

毕竟你得到了答案! ;)

顺便提一下,在http://john-sheehan.com/blog/net-cheat-sheets/

上有一个方便的格式字符串备忘单(以及其他方便的备忘单)

答案 1 :(得分:7)

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

MSDN列出了standard numeric format stringscustom numeric format strings,因此您应该能够亲眼看到没有一个符合您的需求。