簡體   English   中英

Double.ToString為0返回空

[英]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在你的代碼),如果你CurrentCultureNumberGroupSeparator比不同,字符時, 會顯示出來,不是,

例如; 我在土耳其,我目前的文化是tr-TR ,這種文化有. 作為NumberGroupSeparator 這就是為什么你的代碼會在我的機器中生成##.###.###.###格式而不是##,###,###,###

對於字符串格式,#表示可選位置。 例如,如果數字等於或大於10,則類似“#0”的格式字符串將顯示第一個數字字符。因此,如果要顯示數字,則需要將主題標簽轉換為零。

暫無
暫無

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

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