2013-04-01 91 views
0

我正在嘗試格式化小數(作爲沒有%符號的百分比),在負數中顯示括號(),並按原樣顯示正數。基於數字符號的自定義數字格式字符串

var returnString = value.HasValue 
      ? string.Format("{0:0.0;(0.0)}", value.Value * 100) : 
      DefaultEmptyString; 

return returnString; 

我的主要問題是,對於一個數字,例如-0.000491在這種格式化方案是一個零應該還是顯示括號內,因爲它是一個負零。 儘管如此,它正在丟失。

我可以停止使用section separator並利用如果聲明,而是它看起來像部分分隔符應該做的伎倆。

任何想法爲什麼格式不正確?

+0

無默認的數據類型,如整數或雙精度允許的' 0'爲負值。如果你想要一個負數0,那麼你必須自己將負號加到字符串中。 –

回答

0

任何想法爲什麼格式化不正確?

根據完成正確的documentation

如果要格式化的數是負的,但根據在所述第二部分中的格式,所得到的零是舍入後變爲零根據第一部分格式化。

因爲我看不出這將覆蓋默認行爲提供的任何選擇,一種選擇是手動添加括號:

public string Format(decimal value) 
{ 
    string s = (value*100).ToString("0.0;0.0"); 
    if(value < 0) 
     s = "(" + s + ")"; 
    return s; 
}