標籤:style blog http ar color os 使用 sp for
我們常常會遇到將數字轉換為金額字串,方法很簡單,比如:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 double num = 123.456; 6 string num1 = num.ToString("C2"); 7 Console.WriteLine(num1); 8 Console.Read(); 9 }10 }View Code
其中“C”是表示轉金額,”2“是表示保留小數點後兩位的精度。
結果是
但是,實際中我們寫的程式,客戶用的時候遇到了問題,就是在他們那,用同樣的代碼,結果卻是:
最後研究了一番,發現,ToString()方法有一個重載是 兩個參數的,官方給的是:
1 // 2 // 摘要: 3 // 使用指定的格式和地區性特定格式資訊,將此執行個體的數值轉換為它的等效字串表示形式。 4 // 5 // 參數: 6 // format: 7 // 一個數值格式字串。 8 // 9 // provider:10 // 一個提供地區性特定的格式設定資訊的對象。11 //12 // 返回結果:13 // 此執行個體的值的字串表示形式,由 format 和 provider 指定。14 [SecuritySafeCritical]15 public string ToString(string format, IFormatProvider provider);
View Code
所以,我們如果只給一個參數,第二個參數取本地預設的值,這個值和作業系統中某些參數設定有關係。如果我們可以給定第二個參數,就可以保證在任何作業系統中都轉為人民幣,改進後的代碼是
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 double num = 123.456; 6 string num1 = num.ToString("C2",CultureInfo.CreateSpecificCulture("zh-CN"))); 7 Console.WriteLine(num1); 8 Console.Read(); 9 }10 }View Code
這裡給出幾個常用的貨幣標誌碼:
人民幣:zh-CN
美元:en-US
法郎:fr-FR
日元:ja-JP
註:日元為羊字元 一橫,人民幣為兩橫:¥
參考文檔:http://msdn.microsoft.com/zh-cn/dynamics/dwhawy9k(v=vs.85)/
ToString("C2")轉人民幣金額時的相關問題