爲什麼0.ToString("#.##")
返回空字符串?不應該是0.00
或至少是0?爲什麼0.ToString(「#。##」)返回空字符串而不是0.00或至少爲0?
103
A
回答
170
#
以字符串格式表示該值是可選的。如果你希望得到0.00
您需要以下的輸出:
0.ToString("0.00");
見here for the custom numeric formats可以傳遞給此方法。
126
因爲在格式字符串中,#
用於表示可選的字符佔位符;它僅在需要來表示數字時才被使用。
如果你這樣做,而不是:0.ToString("0.##");
你:0
有趣的是,如果你這樣做:0.ToString("#.0#");
你:.0
如果你希望所有的三個數字:0.ToString("0.00");
生產:0.00
從評論到這個答覆,你的論點似乎是,
它應該顯示'0',因爲如果數字值爲0,爲什麼有人希望看到一個空字符串?
回覆很簡單:您有選擇您希望如何顯示它。這就是自定義格式字符串的用途。 您只需根據您的需求選擇不正確的格式字符串。
20
根據有關Digit Placeholder的文檔。
如果被格式化的值在格式字符串中出現'#'的位置有一個數字,那麼該數字將被複制到結果字符串中。否則,在結果字符串中不存在該位置的 。即使「0」是字符串中的唯一數字,該說明符也不會顯示「0」字符(如果它不是有效數字)。如果 是顯示的數字中的有效數字,將顯示「0」字符。 「##」格式字符串會使值四捨五入到小數點後面的最接近的數字 ,此處始終使用從零開始的舍入。例如,用「##」格式化34.5將得到值35
如果你想零顯示使用零佔位符
f是格式化的價值有一個數字在格式字符串中出現'0'的位置,然後將該數字複製到結果字符串中。 小數點前最左邊的'0'和小數點後最右邊的'0'的位置決定了總是出現在結果字符串中的數字範圍。
「00」說明符會使值四捨五入到小數點前的最接近的數字,此處始終使用從零開始舍入。例如,使用「00」格式化 34.5將導致值35.
相關問題
- 1. 爲什麼返回-1而不是0?
- 2. 爲什麼DropDownList.Text在顯式爲空字符串時返回0?
- 3. 爲什麼不爲空(0)返回false?
- 4. 返回空而不是0
- 5. 爲什麼空語句ToString()返回一個空字符串?
- 6. 爲什麼則getIdentifier始終爲0返回一個字符串
- 7. 爲什麼這個BufferedReader返回空字符串而不是null?
- 8. 爲什麼signbit(-0)返回0?
- 9. 爲什麼InverseFunction [0&] @ 0返回33/10?
- 10. MenuItem的toString方法返回空字符串,爲什麼?
- 11. 爲什麼CreateWindowEx返回0
- 12. 爲什麼Api.getSize返回0
- 13. 爲什麼mysql_insert_id()返回0?
- 14. 爲什麼SetWindowsHookEx返回0?
- 15. 爲什麼mysql_num_rows()返回0?
- 16. 爲什麼stdout.channel.recv_exit_status的返回值是'7'而不是'0'
- 17. JavaScript二進制減少函數:爲什麼16 + 0返回0?
- 18. C拆分字符串函數在字符串的末尾返回\ 377而不是\ 0。爲什麼?
- 19. 爲什麼s [0]是C++中空字符串s的空字符串?
- 20. 這是爲什麼返回0?
- 21. 爲什麼Canvas :: GetLeft總是返回0?
- 22. 爲什麼mysqli_num_rows總是返回0?
- 23. 爲什麼mysqli num_rows總是返回0?
- 24. 爲什麼InputStream.inAvailable()總是返回0?
- 25. 爲什麼oci_num_rows總是返回0值?
- 26. 爲什麼getUser()總是返回0?
- 27. 爲什麼mysqli_insert_id()總是返回0?
- 28. 爲什麼selector.select()總是返回0
- 29. 爲什麼getEdgeFlags()總是返回0
- 30. 爲什麼dataContext.GetChangeSet()。Deletes.Count()總是返回0?
有一件事仍令我困惑,爲什麼結果不是0.因爲0不是可選的。是空的有道理嗎? – user960567