[英]Double.ToString returns empty for 0
任何人都可以幫助我理解為什么“text”變量為以下代碼段為空,
double d = 0;
var text = d.ToString("##,###,###,###");
如果我將d的值更改為任何非零值,我會得到正確的字符串表示。
請注意, 即使零是字符串中的唯一數字 ,此說明符也不會顯示不是有效數字的零 。 僅當它是顯示的數字中的有效數字時,它才會顯示零。
如果要將其顯示為00,000,000,000
,則可以使用"0"
自定義說明 00,000,000,000
。 但請記住,如果它與double中的任何數值都不匹配,則此說明符將為零。
這意味着(15).ToString("00,000,000,000")
將產生00,000,000,015
。
如果您想顯示0
而不是其他值,只需將您的最后一位數字格式從#
更改為0
如##,###,###,##0
。
但在我看來,更好的方法可能是使用數字"N"
格式說明符 。 這個說明符生成數千個組分隔符,它的大小,小數分隔符和它的大小(你可以用N0
省略這個部分)可能的負號和它的模式。
double d = 0;
var text = d.ToString("N0");
此外,我想提及,
在您的字符串格式。 你想團,如千位分隔符(因為你不使用任何 IFormatProvider
在你的代碼),如果你CurrentCulture
的NumberGroupSeparator
比不同,
字符時, 它會顯示出來,不是,
。
例如; 我在土耳其,我目前的文化是tr-TR
,這種文化有.
作為NumberGroupSeparator
。 這就是為什么你的代碼會在我的機器中生成##.###.###.###
格式而不是##,###,###,###
。
對於字符串格式,#表示可選位置。 例如,如果數字等於或大於10,則類似“#0”的格式字符串將顯示第一個數字字符。因此,如果要顯示數字,則需要將主題標簽轉換為零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.