为什么 0.ToString(“#.##”) 返回空字符串而不是 0.00 或至少返回 0?
为什么 0.ToString("#.##")
返回空字符串?不应该是 0.00
或至少 0 吗?
Why does 0.ToString("#.##")
return an empty string? Shouldn't it be 0.00
or at least 0?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
字符串格式中的
#
表示该值是可选的。如果您希望获得输出0.00
,您需要以下内容:请参阅此处了解可以传递给此方法的自定义数字格式。
#
in the string format indicate that the value is optional. If you wish to get the output0.00
you need the following:See here for the custom numeric formats that can be passed to this method.
因为在格式字符串中,
#
用于表示可选字符占位符;仅当需要来表示数字时才使用它。如果你这样做:
0.ToString("0.##");
你会得到:0
有趣的是,如果你这样做:
0.ToString( "#.0#");
你得到:.0
如果你想要所有三个数字:
0.ToString("0.00");
产生: < code>0.00从评论到此回答,你的论点似乎是,
响应很简单:您可以选择您希望它如何显示。这就是自定义格式字符串的用途。 您只是选择了不正确的格式字符串来满足您的需求。
Because in a format string, the
#
is used to signify an optional character placeholder; it's only used if needed to represent the number.If you do this instead:
0.ToString("0.##");
you get:0
Interestingly, if you do this:
0.ToString("#.0#");
you get:.0
If you want all three digits:
0.ToString("0.00");
produces:0.00
From the comments to this answer, your argument seems to be,
The response is simple: You have the choice how you wish it to be displayed. That's what the custom format strings are for. You have simply chosen the incorrect format string for your needs.
根据有关数字占位符的文档。
如果您希望显示零,请使用零占位符
According to the documentation about the Digit Placeholder.
If you want the zero to display use the Zero PlaceHolder
试试这个
0.ToString("#,##; #,##;0")
https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator
第一部分适用于正值,第二部分适用为负值,第三部分适用于零。
Try this
0.ToString("#,##; #,##;0")
https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator
The first section applies to positive values, the second section applies to negative values, and the third section applies to zeros.
像这样使用它:
#
之后的0
将确保如果值为 0,则将输出值设置为 0,否则将显示该值。所以
0.0.ToString("#0.##")=0.00
和10.ToString("#.##")=10.00
Use it like this:
0
after#
will ensure to set output value to 0 if the value is 0 else it will display the value.So
0.0.ToString("#0.##")=0.00
and10.ToString("#.##")=10.00