簡體   English   中英

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

[英]Why does 0.ToString("#.##") return an empty string instead of 0.00 or at least 0?

為什么0.ToString("#.##")返回一個空字符串? 不應該是0.00至少 0嗎?

#在字符串格式中表示該值是可選的。 如果您希望獲得輸出0.00您需要以下內容:

0.ToString("0.00");

有關可以傳遞給此方法的自定義數字格式,請參見此處

因為在格式字符串中, #用於表示可選字符占位符; 它僅在需要表示數字時使用。

如果你這樣做: 0.ToString("0.##"); 你得到: 0

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

如果你想要所有三個數字: 0.ToString("0.00"); 產量: 0.00


從評論到這個答案,你的論點似乎是,

它應該顯示“0”,因為如果數值為 0,為什么有人會想要看到一個空字符串?

答案很簡單:您可以選擇希望的顯示方式。 這就是自定義格式字符串的用途。 您只是根據需要選擇了不正確的格式字符串

根據有關數字占位符的文檔。

如果正在格式化的值在格式字符串中出現“#”的位置有一個數字,則該數字將被復制到結果字符串中。 否則,結果字符串中的該位置不會存儲任何內容。 如果“0”不是有效數字,即使“0”是字符串中唯一的數字,此說明符也不會顯示它。 如果它是所顯示數字中的有效數字,它將顯示“0”字符。 “##”格式字符串使值四舍五入到小數點前最接近的數字,其中始終使用遠離零的四舍五入。 例如,使用“##”格式化 34.5 將導致值 35。

如果要顯示零,請使用零占位符

f 被格式化的值在格式字符串中出現“0”的位置有一個數字,然后該數字被復制到結果字符串中。 小數點前最左邊的“0”和小數點后最右邊的“0”的位置決定了結果字符串中始終存在的數字范圍。
“00”說明符使值四舍五入到小數點前最接近的數字,其中始終使用遠離零的四舍五入。 例如,使用“00”格式化 34.5 將導致值 35。

試試這個0.ToString("#,##; #,##;0")

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator

第一部分適用於正值,第二部分適用於負值,第三部分適用於零。

像這樣使用它:

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

#后面的0將確保將輸出值設置為 0,如果值為 0,否則將顯示該值。 所以0.0.ToString("#0.##")=0.0010.ToString("#.##")=10.00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM