vb.net Convert.ToDecimal不工作

vb.net Convert.ToDecimal不工作,vb.net,decimal,Vb.net,Decimal,我正在写一个读取gps坐标的程序。我以字符串格式获取gps坐标,如下所示: 429659 153167 然后我想把这些字符串转换成小数。在我的开发PC上,它工作正常,但只要我把软件放在另一台PC上,它就不会转换成十进制。它输出不带逗号的值,如下所示: 429659 153167 这是我的密码: gpsLatDecimalString = gpsData(2).Substring(2, gpsData(2).Length - 2).Replace(".", ",") gpsLongDecimalS

我正在写一个读取gps坐标的程序。我以字符串格式获取gps坐标,如下所示:

429659 153167

然后我想把这些字符串转换成小数。在我的开发PC上,它工作正常,但只要我把软件放在另一台PC上,它就不会转换成十进制。它输出不带逗号的值,如下所示:

429659 153167

这是我的密码:

gpsLatDecimalString = gpsData(2).Substring(2, gpsData(2).Length - 2).Replace(".", ",")
gpsLongDecimalString = gpsData(4).Substring(3, gpsData(4).Length - 3).Replace(".", ",")

'LAT: 25.69953
'LONG: 28.23881

gpsLatDecimal = System.Convert.ToDecimal(gpsLatDecimalString)
gpsLongDecimal = System.Convert.ToDecimal(gpsLongDecimalString)

看起来您得到的坐标是XXXXX(点)YYYY的形式,这可能是针对不同区域性配置操作系统的PC中的一个问题

不要试图用逗号替换该点,而是在调用
Convert.ToDecimal

gpsLatDecimalString = gpsData(2).Substring(2, gpsData(2).Length - 2)
gpsLongDecimalString = gpsData(4).Substring(3, gpsData(4).Length - 3)

gpsLatDecimal = Convert.ToDecimal(gpsLatDecimalString, CultureInfo.InvariantCulture)
gpsLongDecimal = Convert.ToDecimal(gpsLongDecimalString, CultureInfo.InvariantCulture)
现在,在您的PC上(可能配置了逗号作为十进制分隔符),转换器会被告知使用
不变量文化
来理解字符串,而在另一台配置了小数点分隔符的PC上,这是默认值,
CultureInfo
参数无效