VB中的类型转换.. NET在Windows Mobile上



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

我有一个sql查询,它返回一个DataTable,其中包含扫描仪要挑选的项目列表,有时数量是十进制数。

问题是我不能将十进制数(如0,8)从字符串转换为双精度。我已经尝试了以下所有方法:

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

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

看起来您的CurrentCulture.作为小数分隔符,而您正试图用,来解析值。

试试:

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

最新更新