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

Issue with Formatting a double variable to show in textbox in 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

谢谢

article in MSDN描述了这个问题。看看Two sections旁边说的:

If the number to be formatted is negative, but becomes zero after rounding according to the format in the second section, the resulting zero is formatted according to the first section.

在你的例子中,符号的格式是 {0:+;-}。这实际上意味着没有数字格式,只有符号格式。因此,当四舍五入为这种格式时,它必须四舍五入为整数。因此,在 -0.1-0.4 的情况下,数字四舍五入为 0,它使用第一部分 (+),但 -0.5 四舍五入为 -1,因此第二部分 (- ) 被使用。

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

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