如何正确使用CultureInfo.InvariantCulture

时间:2011-06-01 18:15:14

标签: .net vb.net

我正在尝试从用户输入(字符串)中读取一个数字,如:

' Where "." is grouping separator and "," is the decimal character
dim strUserInput as string = "172.500,00"
dim ret as double

' Produces 172.5 ("." is the decimal separator)
ret = val(strUserInput)
'
' Alternative Way
' Still producing 172.5
strUserInput = strUserInput.tostring(CultureInfo.InvariantCulture) 'nothing changes
ret = val(strUserInput)

如何正确使用CultureInfo将172,500.00(或172500,00或仅172500)返回到双变量?

2 个答案:

答案 0 :(得分:3)

Double.Parse("175.500,00", CultureInfo.GetCultureInfo("whatever culture the input is"))

德国文化“de”使用十进制逗号和句号作为千分隔符,所以如果你不知道就可以使用它。

答案 1 :(得分:1)

来自MSDN documentation for val

  

Val功能仅识别   句点(。)作为有效小数   分隔器。当小数不同时   使用分隔符,如   国际申请,使用CDbl   或者CInt而不是将字符串转换为   一个号码。要转换字符串   a中数字的表示   特定的文化到数值,   使用数字类型的Parse(String,   IFormatProvider)方法。例如,   使用   System.Double.Parse(System.String,System.IFormatProvider)   将字符串转换为Double时。