vb.net Convert.ToDecimal 不工作
vb.net Convert.ToDecimal Not working
我正在编写一个读取 gps 坐标的程序。我以字符串格式获取 gps 坐标,如下所示:
42,9659
15,3167
然后我想将这些字符串转换为 DECIMALS。在我的开发 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(point)YYYYY,这在 PC 中可能是一个问题,OS 针对不同的文化进行了配置。
不要尝试用逗号替换点,而是在对 Convert.ToDecimal
的调用中使用适当的 IFormatProvider
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 上(可能配置为逗号作为小数点分隔符),转换器被告知使用 InvariantCulture
来理解字符串,而在另一台 PC 上将点配置为小数点分隔符, 这是默认值,CultureInfo
参数无效。
我正在编写一个读取 gps 坐标的程序。我以字符串格式获取 gps 坐标,如下所示:
42,9659 15,3167
然后我想将这些字符串转换为 DECIMALS。在我的开发 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(point)YYYYY,这在 PC 中可能是一个问题,OS 针对不同的文化进行了配置。
不要尝试用逗号替换点,而是在对 Convert.ToDecimal
IFormatProvider
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 上(可能配置为逗号作为小数点分隔符),转换器被告知使用 InvariantCulture
来理解字符串,而在另一台 PC 上将点配置为小数点分隔符, 这是默认值,CultureInfo
参数无效。