为什么 0.ToString(“#.##”) 返回空字符串而不是 0.00 或至少返回 0?

发布于 2024-12-28 15:36:19 字数 98 浏览 1 评论 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

夜雨飘雪 2025-01-04 15:36:19

字符串格式中的#表示该值是可选的。如果您希望获得输出 0.00,您需要以下内容:

0.ToString("0.00");

请参阅此处了解可以传递给此方法的自定义数字格式

# in the string format indicate that the value is optional. If you wish to get the output 0.00 you need the following:

0.ToString("0.00");

See here for the custom numeric formats that can be passed to this method.

清浅ˋ旧时光 2025-01-04 15:36:19

因为在格式字符串中,# 用于表示可选字符占位符;仅当需要来表示数字时才使用它。

如果你这样做: 0.ToString("0.##"); 你会得到: 0

有趣的是,如果你这样做: 0.ToString( "#.0#"); 你得到: .0

如果你想要所有三个数字: 0.ToString("0.00"); 产生: < code>0.00


从评论到此回答,你的论点似乎是,

它应该显示“0”,因为如果数值为 0,为什么有人会希望看到空字符串?

响应很简单:您可以选择您希望它如何显示。这就是自定义格式字符串的用途。 您只是选择了不正确的格式字符串来满足您的需求

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,

it should show '0', because why would anyone ever want to see an empty string if the numeric value is 0?

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.

各自安好 2025-01-04 15:36:19

根据有关数字占位符的文档。

如果正在格式化的值在格式字符串中出现“#”的位置有一个数字,则该数字将被复制到结果字符串中。否则什么都不是
存储在结果字符串中的该位置。如果“0”字符不是有效数字,则该说明符永远不会显示该字符,即使“0”是字符串中唯一的数字。它将
如果“0”字符是所显示数字中的有效数字,则显示该字符。 “##”格式字符串导致值四舍五入到前面最接近的数字
小数,始终使用远离零的舍入。例如,使用“##”格式化 34.5 将得到值 35。

如果您希望显示零,请使用零占位符

如果正在格式化的值在格式字符串中出现“0”的位置有一个数字,则该数字将被复制到结果字符串中。的位置
小数点前最左边的“0”和小数点后最右边的“0”决定了结果字符串中始终存在的数字范围。
“00”说明符使值四舍五入到小数点前最接近的数字,其中始终使用远离零的四舍五入。例如,格式化
34.5 加上“00”将得到值 35。

According to the documentation about the Digit Placeholder.

If the value being formatted has a digit in the position where the '#' appears in the format string, then that digit is copied to the result string. Otherwise, nothing is
stored in that position in the result string. This specifier never displays the '0' character if it is not a significant digit, even if '0' is the only digit in the string. It will
display the '0' character if it is a significant digit in the number being displayed. The "##" format string causes the value to be rounded to the nearest digit preceding
the decimal, where rounding away from zero is always used. For example, formatting 34.5 with "##" would result in the value 35.

If you want the zero to display use the Zero PlaceHolder

f the value being formatted has a digit in the position where the '0' appears in the format string, then that digit is copied to the result string. The position of the
leftmost '0' before the decimal point and the rightmost '0' after the decimal point determines the range of digits that are always present in the result string.
The "00" specifier causes the value to be rounded to the nearest digit preceding the decimal, where rounding away from zero is always used. For example, formatting
34.5 with "00" would result in the value 35.

浅唱々樱花落 2025-01-04 15:36:19

试试这个 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.

稚然 2025-01-04 15:36:19

像这样使用它:

0.ToString("#0.##")

# 之后的 0 将确保如果值为 0,则将输出值设置为 0,否则将显示该值。
所以 0.0.ToString("#0.##")=0.0010.ToString("#.##")=10.00

Use it like this:

0.ToString("#0.##")

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 and 10.ToString("#.##")=10.00

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文