你好我有一个神秘的问题。
首先,我将向您展示有效的代码。我使用了一个新项目来测试我的问题,但这里有效:
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; 任何想法?
答案 0 :(得分:3)
您的字符串编号97.9
正在转换为double,但在您当前的计算机文化中,这些点充当千位分隔符,逗号为小数点分隔符,看起来您希望该点充当小数点分隔符。是文化问题。
试试这个:
str = "97.9"
dbl = Double.Parse(str, Globalization.CultureInfo.InvariantCulture)
顺便说一下,您应该使用Option Strict On
来阻止代码中类型的隐式转换。
答案 1 :(得分:0)
您好我使用这个小方法
Public Function toDouble(sim As String) As Double
Dim dbl As Double = CDbl(sim.Replace(".", ","))
Return dbl
End Function