为什么我在解析小数时(0)ToString我的字符串在使用方法时显示为空:
String somthing = someDecimal.ToString("#")
当我使用时:
String somthing = somDecimal.ToString("0.##")
字符串显示为0
?
当我以两种方式查看调试模式中的值时,它表示他们有一个" 0"在他们中间。
答案 0 :(得分:4)
请注意,此说明符从不显示不是a的零 有效数字,即使零是字符串中的唯一数字。它 只有当它是数字中的有效数字时才会显示零 正在展示。
如果您想在小数点后显示数字,则需要使用0.00
代替0.##
。
答案 1 :(得分:2)
如果您想要小数点后面的固定小数位数,则需要使用
String somthing = somDecimal.ToString("0.00")
在您的示例中,您使用#
说明符,这意味着如果有一个有意义的数字,请在此处输入一个数字'。
如果someDecimal
为0.01
decimal somDecimal = 0.01m
String somthing = somDecimal.ToString("0.##");
但不是
decimal somDecimal = 0.01m
String somthing = somDecimal.ToString("0.#");
答案 2 :(得分:2)
因为pound"#"意味着如果有数字,则转换为符号。 0
是一个空的"数字,因此它转换为""。
事实上,在第二种情况下,你得到0
,因为你暗示在点之前显示至少一个数字。
这一切都是按照C#语言的设计惯例。
答案 3 :(得分:2)
MSDN: the "#" Custom Specifier
"#"自定义格式说明符用作数字占位符符号。 如果正在格式化的值在其中的位置有一个数字 "#"符号出现在格式字符串中,该数字被复制到 结果字符串。否则,没有任何东西存储在该位置 结果字符串。 请注意,此说明符从不显示零 即使零是唯一的数字,也不是一个重要的数字 串。只有当它是一个重要的数字时它才会显示零 正在显示的号码。
因此,如果十进制数为1而不是0,即使使用ToString("#")
,它也会被显示。