VB.NET 根据所选文化格式化数字
VB.NET Formatting numbers according culture selected
我有一个多语言 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.##"
相反。
那么如何自动调整掩码以适用于所有语言?检测语言并相应地设置正确的掩码?但它适用于一些语言但不适用于很多语言...
问题是您正在对小数点(,
或 .
字符)进行硬编码。
改用标准格式字符串。看这里:https://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
N
- Number - Integral and decimal digits, group separators, and a decimal separator with optional negative sign.
N{n}
格式使用"Number"格式,后面跟一个整数是小数点后的位数:
value.ToString("N2", CultureInfo.CurrentCulture)
我有一个多语言 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.##"
相反。
那么如何自动调整掩码以适用于所有语言?检测语言并相应地设置正确的掩码?但它适用于一些语言但不适用于很多语言...
问题是您正在对小数点(,
或 .
字符)进行硬编码。
改用标准格式字符串。看这里:https://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
N
- Number - Integral and decimal digits, group separators, and a decimal separator with optional negative sign.
N{n}
格式使用"Number"格式,后面跟一个整数是小数点后的位数:
value.ToString("N2", CultureInfo.CurrentCulture)