如何更改號碼爲以下內容: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
,所以它不好。
如何更改號碼爲以下內容: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
,所以它不好。
你需要
string.Format("{0:#,##0.00}", Number)
你需要指定牽頭佔位符爲#而不是零,這使得它可選。
但是,不要用「暴力」來設置數字格式,最好是找出你正在瞄準的文化格式,並向string.format提供正確的CultureInfo
。 String.Format
允許您提供文化的格式如下:
var culture = CultureInfo.GetCultureInfo("fr-FR");
var formattedNumber = string.Format(culture , "{0:n}", Number);
(我選擇了純粹使用法語作爲例證,並因爲它似乎匹配您的例子的要求)。
你不應該這樣做,是使用{0:n}
,如果你關心的是具體的格式,那麼不需要指定文化 - 因爲這完全取決於用戶/系統的文化設置。
試試這個String.Format("{0:n}", 1000)
不! - 這使得它完全依賴於當前的文化設置。嘗試使用具有不同區域設置的不同用戶,並且您會得到不同的答案。這是*不是*強制格式化爲特定內容的正確方法。 – 2012-04-18 12:09:05
@RobLevine我同意! ,我不知道可能Xeramal去延長 – Sudantha 2012-04-18 12:11:28
嘗試String.Format("#,0.##")
。這個對我有用。
輸入:800
輸出:800,00
輸入:1400
輸出:1.400,00
我使用的是德國文化爲數字格式。也許你必須指定它,這取決於你的文化。
使用格式字符串格式化數字時,.
是佔位符,無論小數點分隔符是用於格式化的文化。 ,
同樣用作千位分隔符。
您需要在正確的位置使用這些文件,並使用,
作爲小數分隔符,.
作爲千位分隔符。
string.Format(CultureInfo.GetCultureInfo("de-DE"), "{0:n}", 1000)
產生1.000,00
。
string.Format(CultureInfo.GetCultureInfo("en-GB"), "{0:n}", 1000)
產生1,000.00
。
適當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 = ".";
}
不是網絡應用程序的最佳想法,雖然... – Oded 2012-04-18 12:17:46
好吧,只是一個關於如何做到這一點。 – 2012-04-18 12:23:14
你有沒有嘗試設置 NumberFormat根據您的需要
NumberFormatInfo num = new NumberFormatInfo();
num.NumberDecimalSeparator = ",";
num.NumberGroupSeparator = ".";
string samp = 70000.00.ToString("N2",num); // prints 70.000,00
您希望十進制分隔符是千位分隔符。 – 2012-04-18 12:08:12
@AseemGautam - 這就是它在我們小小的星球上的幾種文化中的作用。 – Oded 2012-04-18 12:10:56
嘗試#代替還是0? {0:####,00}。另外:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx – Dan 2012-04-18 12:11:28