Hola,
Soy nuevo en el foro pero tengo un problema con un programa en Visual Basic ultima versión al momento de colocar los datos. Pues la respuesta que me debe dar es 0.25 y al ingresar los valores con (.) me da 5.015 y si los ingreso con (,) no me corre el programa y se detiene. el código que uso es el siguiente:        
Dim Qd, ks, dd, Ec, Ev, dh, l, z2, H, p, u, km, di, g, visc, hf1, v, Q, hf2, er As Double
        Qd = TextBox1.Text
        ks = TextBox2.Text
        dd = TextBox3.Text
        Ec = TextBox4.Text
        Ev = TextBox5.Text
        dh = TextBox6.Text
        l = TextBox7.Text
        z2 = TextBox8.Text
        H = TextBox9.Text
        p = TextBox10.Text
        u = TextBox11.Text
        km = TextBox12.Text
        di = TextBox13.Text
        g = 9.81
        visc = u / p
        hf1 = H - z2
        Dim comprobacion As Boolean
        comprobacion = False
        Do Until (comprobacion.Equals(True))
            v = ((-2 * Math.Sqrt(2 * g * di * hf1)) / Math.Sqrt(l)) * Math.Log10(((ks) / (3.7 * di)) + ((2.51 * visc * Math.Sqrt(l)) / (di * Math.Sqrt(2 * g * di * hf1))))
            Q = v * (Math.PI) * (di ^ 2) / 4
            Dim comprobacion1 As Boolean
            comprobacion1 = False
            Do Until (comprobacion1.Equals(True))
                If (Q >= Qd) Then
                    comprobacion1 = True
                Else
                    di = di + dd
                    v = ((-2 * Math.Sqrt(2 * g * di * hf1)) / Math.Sqrt(l)) * Math.Log10(((ks) / (3.7 * di)) + ((2.51 * visc * Math.Sqrt(l)) / (di * Math.Sqrt(2 * g * di * hf1))))
                    Q = v * (Math.PI * (di ^ 2) / 4)
                End If
            Loop
            'La parte de peridas altas va desde aca'
            Dim vp As Double
            vp = Math.Sqrt((2 * g * H) / (km))
            Dim comprobacionv As Boolean
            comprobacionv = False
            Do Until (comprobacionv.Equals(True))
                If (v < vp) Then
                    comprobacionv = True
                    'el procedimiento A va desde aca'
                Else
                    hf1 = 0.000001
                    Do Until (comprobacionv.Equals(True))
                        v = ((-2 * Math.Sqrt(2 * g * di * hf1)) / Math.Sqrt(l)) * Math.Log10(((ks) / (3.7 * di)) + ((2.51 * visc * Math.Sqrt(l)) / (di * Math.Sqrt(2 * g * di * hf1))))
                        Q = v * (Math.PI * (di ^ 2) / 4)
                        Dim comprovacionv1 As Boolean
                        comprovacionv1 = False
                        Do Until (comprovacionv1.Equals(True))
                            If (Q > Qd) Then
                                comprovacionv1 = True
                            Else
                                di = di + dd
                                v = ((-2 * Math.Sqrt(2 * g * di * hf1)) / Math.Sqrt(l)) * Math.Log10(((ks) / (3.7 * di)) + ((2.51 * visc * Math.Sqrt(l)) / (di * Math.Sqrt(2 * g * di * hf1))))
                                Q = v * (Math.PI * (di ^ 2) / 4)
                            End If
                        Loop
                        vp = Math.Sqrt((2 * g * (H - hf1)) / km)
                        If ((Math.Abs(v - vp)) < Ev) Then
                            comprobacionv = True
                        Else
                            If (v < vp) Then
                                hf1 = hf1 + dh
                            Else
                                hf1 = hf1 - dh
                            End If
                            di = 0.015
                        End If
                    Loop
                End If
            Loop
            'La parte de peridas altas va hasta aca'
            hf2 = H - z2 - (v ^ 2 / (2 * g))
            Dim comprobacion2 As Boolean
            comprobacion2 = False
            Do Until (comprobacion2.Equals(True))
                If ((Math.Abs(hf1 - hf2) <= er)) Then
                    comprobacion2 = True
                Else
                    v = ((-2 * Math.Sqrt(2 * g * di * hf2)) / Math.Sqrt(l)) * Math.Log10(((ks) / (3.7 * di)) + ((2.51 * visc * Math.Sqrt(l)) / (di * Math.Sqrt(2 * g * di * hf2))))
                    Q = v * (Math.PI * (di ^ 2) / 4)
                    hf1 = hf2
                    hf2 = H - z2 - (v ^ 2 / (2 * g))
                End If
            Loop
            If (Q >= Qd) Then
                comprobacion = True
            Else
                comprobacion = False
            End If
            Label14.Text = "d = " + di.ToString
        Loop
    End Sub Los valores en los cuadros de texto son en orden: 0.12, 0.00015, 0.005, 0.01, 0.01, 0.05, 17, 0, 2.2, 999.3, 0.00117, 4.3, 0.1.
Si alguien me puede ayudar es URGENTE  
