2016-02-28 41 views
0

我有一个多语言vb.net应用程序。VB.NET根据文化选择格式化数字

我试图格式化数(ULONG)通过这样根据当前语言货币组分隔显示它:

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

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

的问题是以下内容:

  1. 如果西班牙语(ES-ES)被选中,那么值不正确 格式化为西班牙语语言货币组隔板',' 代替'.'"0.##"指示,所以我需要代替"0,##"

例如1200被格式化为是1200,而不是1.200

  • 但是,如果我改变掩模"0,##"然后如果语言设置为EN-GB, 值是没有正确格式化为货币组分隔符 是"."而不是",""0,##"所示,所以我需要把"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) 
    
    +2

    这是一个乌龙所以大概是N0 – Steve

    +0

    因为我不想让小数点,N0有效! – user1624552