2012-09-01 91 views
3

如果我設置[區域和語言]美國格式...如何將字符串格式化爲越南貨幣?

CultureInfo cul = CultureInfo.CurrentCulture; 
string decimalSep = cul.NumberFormat.CurrencyDecimalSeparator;//decimalSep ='.' 
string groupSep = cul.NumberFormat.CurrencyGroupSeparator;//groupSep=',' 
sFormat = string.Format("#{0}###", groupSep); 
string a = double.Parse(12345).ToString(sFormat); 

結果是:12,345(正確)

但是,如果我在[區域和語言]格式設置爲越南,那麼結果是:12345

結果應該是12.345

你能幫我嗎?謝謝。

+0

那麼他們怎麼寫這個'en-us'' 12,345.23'?它是12.345.23? –

+0

@NikhilAgrawal 12.345,23見[十進制標記](https://en.wikipedia.org/wiki/Decimal_mark) – Danh

回答

5

你在幫助太多。格式說明符是文化不敏感的,您總是使用逗號來指示分組字符的位置。然後在格式化字符串時將其替換爲實際的分組字符。

這個正確的格式:

 CultureInfo cul = CultureInfo.GetCultureInfo("vi-VN"); // try with "en-US" 
     string a = double.Parse("12345").ToString("#,###", cul.NumberFormat); 

你實際上應該使用「#,#」,以確保它仍然工作在具有罕見的分組文化。從問題中我們不清楚這個問題是重要還是不重要,所以我打了「#,###」

2

嘗試是這樣的:

var value = 8012.34m; 
var info = System.Globalization.CultureInfo.GetCultureInfo("vi-VN"); 
Console.WriteLine(String.Format(info, "{0:c}", value)); 

結果是:

8.012,34 ₫ 

哦,並與值12345結果是12.345,00 ₫