2014-09-28 84 views
-7

雙重價值如何格式化的:格式顯示

double salary = 12345.6789 

顯示爲這樣:

12,345.68 

使用String.Format()或任何其他的方法呢?

我已經試過

String.Format(value.To String("C", CultureInfo.CurrentCulture))); 

但是這不是我所期待的,我要追加貨幣(這是在.NET Framework不可用本地貨幣符號)到一個字符串display.I只需要能夠格式化值。

+6

提示到10答案... – 2014-09-28 11:44:31

+0

'的String.Format(「{0 :n}「,salary);' – 2014-09-28 11:46:37

+2

當涉及金錢時,使用變量類型'decimal'而不是'double'來避免問題。如果double來自外部系統,請先將其轉換爲小數,然後再擔心格式化。 – WhoIsRich 2014-09-28 12:34:15

回答

2

您可以使用N format specifier作爲;

double salary = 12345.6789; 
Console.WriteLine(salary.ToString("N2")); 

結果將是;

12,345.68 

這說明符默認使用您的CurrentCultureNumberGroupSeparatorNumberDecimalSeparator性能。如果您的CurrentCulture中的這些屬性不是,.,則可以將此.ToString()方法的InvariantCulture作爲第二個參數提供,如;

double salary = 12345.6789; 
Console.WriteLine(salary.ToString("N2", CultureInfo.InvariantCulture)); 
1

通 「N」 到double.ToString()

var desiredString = salary.ToString("N"); 
+0

這使用當前文化的貨幣符號進行格式化。那不是我想要的。 – 2014-09-28 11:48:21

+0

你說得對。我混合了「C」和「N」。 – 2014-09-28 11:49:29

1

你想要的格式字符串傳遞給.ToString()方法。

salary.ToString("N"); 

here更多的格式選項

1

試試這個:

String.Format("{0:0,0.0}", 12345.67);  // "12,345.7" 
String.Format("{0:0,0}", 12345.67);  // "12,346" 

更多的例子here

1

您可以使用N standard format specifier,並指定小數點後兩位:

string formatted = salary.ToString("N2"); 

將使用該應用程序的當前區域性的小數點分隔符和千位分隔符。如果你想確保它總是使用一段作爲小數點分隔符和逗號作爲千位分隔符,你可以指定不變文化:

string formatted = salary.ToString("N2", CultureInfo.InvariantCulture);