我正在尝试格式化小数(不带%符号的百分比),在负数周围显示括号()并按原样显示正数。
var returnString = value.HasValue
? string.Format("{0:0.0;(0.0)}", value.Value * 100) :
DefaultEmptyString;
return returnString;
我的主要问题是对于诸如-0.000491之类的数字,在这种格式化方案中它是零,它仍然应该显示括号,因为它是负零。 尽管如此,它正在迷失。
我可以停止使用section separator并使用 if 语句,但看起来部分分隔符应该可以解决问题。
为什么格式化没有正确完成的任何想法?
答案 0 :(得分:0)
来自文档:http://msdn.microsoft.com/en-US/library/0c899ak8%28v=vs.80%29.aspx
“如果要格式化的数字为负数,但在根据第二部分中的格式进行四舍五入后变为零,则根据第一部分格式化结果零。”
格式正确,您需要if语句。
答案 1 :(得分:0)
为什么格式化没有正确完成的任何想法?
根据documentation 正确完成
如果要格式化的数字为负数,但在根据第二部分中的格式进行四舍五入后变为零,则根据第一部分格式化结果零。
由于我没有看到任何可用的选项会覆盖该默认行为,因此一个选项是手动附加括号:
public string Format(decimal value)
{
string s = (value*100).ToString("0.0;0.0");
if(value < 0)
s = "(" + s + ")";
return s;
}