如何将字符串格式化为越南货币?

5
如果我将[区域和语言]中的格式设置为美国...
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
您能帮助我吗?谢谢。

那么他们如何编写 en-us 中的 12,345.23?是 12.345.23 吗? - Nikhil Agrawal
@NikhilAgrawal 12.345,23 请参阅小数点 - Danh
2个回答

9
你的帮助过多了。格式说明符不受语言环境影响,你应该始终使用逗号来表示分组字符的位置,然后在字符串格式化时将其替换为实际的分组字符。
以下格式是正确的:
        CultureInfo cul = CultureInfo.GetCultureInfo("vi-VN");   // try with "en-US"
        string a = double.Parse("12345").ToString("#,###", cul.NumberFormat);

你应该使用"#,#"来确保在具有不常见分组的文化中仍能正常工作。从问题中并不清楚这是否重要,所以我选择使用"#,###"。

4

试试这样做:

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 ₫


(本文翻译涉及货币单位“₫”,该单位是越南盾)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接