我有一个多语言的vb.net应用程序。
我正在尝试格式化一个数字(ULong)以根据当前语言货币组分隔符显示它:
value.ToString("0.##", CultureInfo.CurrentCulture)
CultrueInfo.CurrentCulture可以是英语(en-GB),西班牙语(es-ES)或加泰罗尼亚语(ca-ES),具体取决于应用程序中选择的语言。
问题如下:
','
而不是'.'
中指示的"0.##"
,所以我需要改为"0,##"
。例如,1200形成为1200而不是1.200
"0,##"
,那么如果将语言设置为en-GB,
值未正确格式化为货币组分隔符
是"."
而不是","
中指示的"0,##"
,所以我需要"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)