VB.NET根据所选文化格式化数字

时间:2016-02-28 23:59:25

标签: vb.net globalization cultureinfo culture

我有一个多语言的vb.net应用程序。

我正在尝试格式化一个数字(ULong)以根据当前语言货币组分隔符显示它:

value.ToString("0.##", CultureInfo.CurrentCulture)

CultrueInfo.CurrentCulture可以是英语(en-GB),西班牙语(es-ES)或加泰罗尼亚语(ca-ES),具体取决于应用程序中选择的语言。

问题如下:

  1. 如果选择了西班牙语(es-ES),则值不正确 格式化为西班牙语货币组分隔符是',' 而不是'.'中指示的"0.##",所以我需要改为"0,##"
  2. 例如,1200形成为1200而不是1.200

    1. 但如果我将掩码更改为"0,##",那么如果将语言设置为en-GB, 值未正确格式化为货币组分隔符 是"."而不是","中指示的"0,##",所以我需要"0.##" 代替。
    2. 那么如何自动调整蒙版以适用于所有语言?检测语言并相应地设置正确的掩码?但它适用于一些语言,但不适合很多语言......

1 个答案:

答案 0 :(得分:3)

问题是你是硬编码基数点(,.字符)。

请改用标准格式字符串。见这里:https://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

  

N - 数字 - 积分和小数位数,组分隔符和带可选负号的小数分隔符。

N{n}格式使用“数字”格式和后面的整数,即小数点后的位数:

value.ToString("N2", CultureInfo.CurrentCulture)