将字符串数转换为double

时间:2014-05-14 07:57:56

标签: vb.net string casting

你好我有一个神秘的问题。

首先,我将向您展示有效的代码。我使用了一个新项目来测试我的问题,但这里有效:

Public str As String
Public dbl As Double

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    str = 97.9
    dbl = CDbl(str)
    MsgBox(dbl)

End Sub

输出Msgbox =" 97,9"

现在我向您展示不起作用的代码。这是我的主项目的代码片段。 xanswer ...的ElementAt(指数)。@ similarity.ToString 我使用的Web服务的响应和@similarity是否给出了带有double或Integer值的字符串。

 Dim str As String = xanswer.<possibleduplicates>.<address>.ElementAt(index).@similarity.ToString
                Dim dbl As Double = CDbl(str)
                simlist.Add(dbl)

当我将鼠标悬停在str =&#34; 97.9&#34;好的,但当我将鼠标悬停在dbl上时,它会给我&#34; 979.0&#34; 这是为什么?在第二个变量中,它还使用&#34;。&#34;而不是&#34;,&#34; 任何想法?

2 个答案:

答案 0 :(得分:3)

您的字符串编号97.9正在转换为double,但在您当前的计算机文化中,这些点充当千位分隔符,逗号为小数点分隔符,看起来您希望该点充当小数点分隔符。是文化问题。

试试这个:

str = "97.9"
dbl = Double.Parse(str, Globalization.CultureInfo.InvariantCulture)

查看MSDN Documentation

顺便说一下,您应该使用Option Strict On来阻止代码中类型的隐式转换。

答案 1 :(得分:0)

您好我使用这个小方法

Public Function toDouble(sim As String) As Double
    Dim dbl As Double = CDbl(sim.Replace(".", ","))
    Return dbl

End Function