2012-09-01 54 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 ₫