格式化双变量以在C#中的文本框中显示的问题

有谁知道为什么这个Format命令会产生以下奇怪的结果:

textbox1.Text = String.Format("{0:+;-}{0,7:0.000;0.000}", dblVariable); 

以下是奇怪的结果(检查格式化文本的符号 – 对于小于0.5的数字,符号不正确):

 dblVariable textbox1.Text -0.100000 + 0.100 -0.200000 + 0.200 -0.300000 + 0.300 -0.400000 + 0.400 -0.500000 - 0.500 

谢谢

MSDN中的文章描述了该问题。 看看Two sections旁边的Two sections

如果要格式化的数字是负数,但在根据第二部分中的格式进行舍入后变为零,则根据第一部分格式化结果零。

在您的情况下,符号的格式为{0:+;-} 。 这实际上意味着没有数字格式,只有标志格式。 因此,当舍入到此格式时,必须舍入为整数。 因此,在-0.1-0.4的情况下,数字舍入为0,使用第一部分(+),但-0.5舍入为-1 ,因此使用第二部分( – )。

您只需使用单一格式即可修复它:

 textbox1.Text = String.Format("{0,7:+ 0.000;- 0.000}", dblVariable)