在Windows Mobile上的VB.NET中键入convertion

时间:2013-04-10 19:33:22

标签: .net vb.net windows-mobile type-conversion

我正在维护运行带有.NET 2.0 SP 1和VB.NET的Windows Mobile的条形码扫描程序的应用程序。该应用程序使用PL / SQL与Oracle数据库集成。

我有一个SQL查询,它返回一个DataTable,其中包含要使用扫描程序选择的项目列表,有时数量是十进制数。

问题是我无法将0,8等十进制数字从字符串转换为double。我尝试了以下所有方法:

Dim quantity As String = "0,8"
Dim result As Double = Convert.ToDouble(quantity)
Dim result As Double = Double.Parse(quantity)
Dim result As Double = CDbl(quantity)

在所有情况下,结果为8而不是0.8。

2 个答案:

答案 0 :(得分:2)

CF的解析能力有限。我假设设备文化设置为en-US,在这种情况下你可以这样做:

Dim quantity As String = "0,8"
Dim result As Double = Double.Parse(quantity.Replace(',', '.'))

如果你希望它对设备的当前设置更具区域设置意识,那么你可能会更加安全:

Dim quantity As String = "0,8"
Dim result As Double

If CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == "."
    result = Double.Parse(quantity.Replace(',', '.'))
Else
    result = Double.Parse(quantity)
End If

答案 1 :(得分:1)

您的CurrentCulture似乎有.作为小数点分隔符,而您尝试使用,解析值。

试试:

System.Threading.Thread.Current.CurrentCulture.NumberFormat.NumberDecimalSeparator = ","
Dim result As Double = Double.Parse(quantity)