![](/img/trans.png)
[英]Why does dynamic.ToString() return something between a string and not a string?
[英]Why does 0.ToString("#.##") return an empty string instead of 0.00 or at least 0?
為什么0.ToString("#.##")
返回一個空字符串? 不應該是0.00
或至少 0嗎?
因為在格式字符串中, #
用於表示可選字符占位符; 它僅在需要表示數字時使用。
如果你這樣做: 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")
第一部分適用於正值,第二部分適用於負值,第三部分適用於零。
像這樣使用它:
0.ToString("#0.##")
#
后面的0
將確保將輸出值設置為 0,如果值為 0,否則將顯示該值。 所以0.0.ToString("#0.##")=0.00
和10.ToString("#.##")=10.00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.