2012-04-18 26 views
2

如何更改號碼爲以下內容:C#的String.format 1000,00到1.000,00

1000應該成爲1.000,00,當我有700,它必須是700,00
當我嘗試string.Format("{0:0,000.00}", Number),700變成0.700,00,所以它不好。

+0

您希望十進制分隔符是千位分隔符。 – 2012-04-18 12:08:12

+0

@AseemGautam - 這就是它在我們小小的星球上的幾種文化中的作用。 – Oded 2012-04-18 12:10:56

+1

嘗試#代替還是0? {0:####,00}。另外:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx – Dan 2012-04-18 12:11:28

回答

7

你需要

string.Format("{0:#,##0.00}", Number) 

你需要指定牽頭佔位符爲#而不是零,這使得它可選。

但是,不要用「暴力」來設置數字格式,最好是找出你正在瞄準的文化格式,並向string.format提供正確的CultureInfoString.Format允許您提供文化的格式如下:

var culture = CultureInfo.GetCultureInfo("fr-FR"); 
var formattedNumber = string.Format(culture , "{0:n}", Number); 

(我選擇了純粹使用法語作爲例證,並因爲它似乎匹配您的例子的要求)。

你不應該這樣做,是使用{0:n},如果你關心的是具體的格式,那麼不需要指定文化 - 因爲這完全取決於用戶/系統的文化設置。

+0

這是行不通的,因爲當我有'0'我得到'000,00' ... – asdasdad 2012-04-18 12:12:01

+2

最常見的模式是'#,## 0.00'。會產生'0,01'和'1.000.000,00' – 2012-04-18 12:17:46

+0

是的,我現在會使用它。 – asdasdad 2012-04-18 12:19:43

0

試試這個String.Format("{0:n}", 1000)

+6

不! - 這使得它完全依賴於當前的文化設置。嘗試使用具有不同區域設置的不同用戶,並且您會得到不同的答案。這是*不是*強制格式化爲特定內容的正確方法。 – 2012-04-18 12:09:05

+0

@RobLevine我同意! ,我不知道可能Xeramal去延長 – Sudantha 2012-04-18 12:11:28

0

嘗試String.Format("#,0.##")。這個對我有用。
輸入:800
輸出:800,00

輸入:1400
輸出:1.400,00

我使用的是德國文化爲數字格式。也許你必須指定它,這取決於你的文化。

2

使用格式字符串格式化數字時,.佔位符,無論小數點分隔符是用於格式化的文化。 ,同樣用作千位分隔符。

您需要在正確的位置使用這些文件,並使用,作爲小數分隔符,.作爲千位分隔符。

string.Format(CultureInfo.GetCultureInfo("de-DE"), "{0:n}", 1000) 

產生1.000,00

string.Format(CultureInfo.GetCultureInfo("en-GB"), "{0:n}", 1000) 

產生1,000.00

5

適當CultureInfo你想小數點分隔符是,和千位分隔符是。

最好的方法是在應用程序級別定義這一點以保持一致性。

的WinForms:

在Program.cs的

System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator = ","; 
System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberGroupSeparator = "."; 

ASP.NET

定義一個基本頁面,並做到:

protected override void InitializeCulture() 
    { 
    base.InitializeCulture(); 

    System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator = ",";  
    System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberGroupSeparator = ".";      
    } 
+3

不是網絡應用程序的最佳想法,雖然... – Oded 2012-04-18 12:17:46

+0

好吧,只是一個關於如何做到這一點。 – 2012-04-18 12:23:14

2

你有沒有嘗試設置 NumberFormat根據您的需要

NumberFormatInfo num = new NumberFormatInfo(); 

num.NumberDecimalSeparator = ","; 
num.NumberGroupSeparator = "."; 
string samp = 70000.00.ToString("N2",num); // prints 70.000,00