0

我正在尝试格式化小数(作为没有 % 符号的百分比),在负数周围显示括号 () 并按原样显示正数。

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

return returnString;

我的主要问题是,对于像 -0.000491 这样的数字,在这种格式方案中它是零,它仍然应该显示括号,因为它是负零。尽管如此,它正在丢失。

我可以停止使用部分分隔符并改用if语句,但似乎部分分隔符应该可以解决问题。

任何想法为什么格式不正确?

4

2 回答 2

0

从文档:http: //msdn.microsoft.com/en-US/library/0c899ak8%28v=vs.80%29.aspx

“如果要格式化的数字是负数,但是按照第二节的格式四舍五入后变成零,那么得到的零按照第一节的格式格式化。”

格式正确,您将需要 if 语句。

于 2013-04-01T17:16:22.553 回答
0

任何想法为什么格式不正确?

根据文档正确完成

如果要格式化的数是负数,但是按照第二节的格式四舍五入后变成零,那么得到的零按照第一节的格式进行格式化。

由于我没有看到任何可以覆盖该默认行为的可用选项,因此一种选择是手动附加括号:

public string Format(decimal value)
{
   string s = (value*100).ToString("0.0;0.0");
   if(value < 0)
      s = "(" + s + ")";
    return s;
}
于 2013-04-01T17:17:21.887 回答