VB.NET 根据所选文化格式化数字
Posted
技术标签:
【中文标题】VB.NET 根据所选文化格式化数字【英文标题】:VB.NET Formatting numbers according culture selected 【发布时间】:2016-02-28 23:59:25 【问题描述】:我有一个多语言的 vb.net 应用程序。
我正在尝试格式化一个数字(ULong)以根据当前语言货币组分隔符显示它:
value.ToString("0.##", CultureInfo.CurrentCulture)
CultrueInfo.CurrentCulture 可以是英语 (en-GB)、西班牙语 (es-ES) 或加泰罗尼亚语 (ca-ES),具体取决于应用中选择的语言。
问题如下:
-
如果选择了西班牙语 (es-ES),则值不正确
格式化为西班牙语货币组分隔符是
','
而不是"0.##"
中的'.'
,所以我需要用"0,##"
代替。
例如 1200 被格式化为 1200 而不是 1.200
-
但如果我将掩码更改为
"0,##"
,那么如果语言设置为 en-GB,
值未正确格式化为它的货币组分隔符
是"."
,而不是"0,##"
中的","
,所以我需要输入"0.##"
而是。
那么如何自动调整掩码以适用于所有语言?检测语言并相应地设置正确的掩码?但是对于少数语言来说还可以,但不适合很多语言...
【问题讨论】:
【参考方案1】:问题是您正在硬编码小数点(,
或 .
字符)。
改用标准格式字符串。见这里:https://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
N
- 数字 - 整数和小数位、组分隔符和带有可选负号的小数分隔符。
Nn
格式使用“数字”格式,后面的整数是小数点后的位数:
value.ToString("N2", CultureInfo.CurrentCulture)
【讨论】:
这是乌龙所以可能是N0以上是关于VB.NET 根据所选文化格式化数字的主要内容,如果未能解决你的问题,请参考以下文章