2013-05-09 32 views
3

換句話說,我想0.123顯示爲「.123」,但是0顯示爲「0」。目前我已經得到了最好是是否有一個C#格式說明符會省略前導零,除非該值爲零?

String.Format("{0:.###}", n) 

如果一切都失敗了,你可以不喜歡這給」 0.123" 爲0.123,但‘’(空字符串)爲0

+0

'的String.Format(「{0:0。### }「,n)'如果改成這樣會產生'0',但是如果你輸入'0.123',這個值將返回前面的'0'。你可以做2件事,保持格式與你所擁有的相同並將'''''值轉換爲'0'或將字符串格式轉換爲'String.Format(「{0:0。###}」,n)' – MethodMan 2013-05-09 21:56:50

回答

9

做如果使用;作爲分隔符,可以爲正數,負數和零值指定格式。當n==0時,string.Format("{0:.###;-.###;0}", n)將顯示'0',並且將爲正值和負值留下前導零。檢查MSDN參考here

4

string s = n == 0 ? "0" : String.Format("{0:.###}", n); 

並不光彩,但把工作:-)

+2

+1我會親自解決這個問題喜歡這個。這很簡單,它很直接,而且很有效。你還想在代碼中做什麼? – evanmcdonnal 2013-05-09 21:50:53

+0

這就是我通常這樣做的方式,但是我在XAML綁定的StringFormat屬性中使用它,所以我想用一個格式字符串來完成。 儘管我最終做了類似於你的回答的事情,因爲它更清晰,所以得到了讚賞。 – 2013-05-09 22:28:58

0

這裏是你可以試試我加了一個地方,你可以測試代碼,並從0的變量更改爲.1234測試

var decNum =.1234;//change to 0 will return 0 change to .1234 will return the correct formatted value 

var formatDecil = String.Format("{0:.###}", decNum); 
formatDecil = string.IsNullOrEmpty(formatDecil) ? 0.ToString():formatDecil;