你的函数没有返回值!
Public Function mdPrecisionBy1(strength As Double, d As Integer) as string  'd=1
    Dim Rstrength As Double
    Dim dk As Double
    Dim k As Integer
    Dim x As Integer
        k = 10 ^ d
        Rstrength = Int((strength * k) / k)
        dk = (strength - Rstrength) * k
        Select Case dk
            Case dk < 0.5
                x = 0
            Case dk > 0.5
                x = 1
            Case dk = 0.5
                If (ky1 * k0) Mod 2 = 1 Then
                    x = 1
                Else
                    x = 0
                End If
        End Select
        mdPrecisionBy1 = str(Rstrength + x / k)
End Function
这样应该可以了。但你这个函数的算法好象有问题,返回值不一定是你想要的。

解决方案 »

  1.   

    Select Case dk
                Case Is < 0.5
                    x = 0
                Case Is > 0.5
                    x = 1
                Case  0.5
                    If (ky1 * k0) Mod 2 = 1 Then
                        x = 1
                    Else
                        x = 0
                    End If
            End Select
      

  2.   

    '大哥,你的函数没有返回值,现在将你的错误跟 我的正确的对比一下:错误的:
    Public Function mdPrecisionBy1(strength As Double, d As Integer)正确的:
    Public Function mdPrecisionBy1(strength as Double d As Integer) as Double  其实我的只不过比你的代码,在后面多了一个 "as Double "而己,这样的话,你的函数就可以返回值了。
      

  3.   

    还有你函数的最后一句应该改成:
    错误的:
    strength = Rstrength + x / k正确的:
    mdPrecisionBy1= Rstrength + x / k其实就是将strength 改成你的函数名:mdPrecisionBy1 
      

  4.   

    谢谢各位大哥帮我解决了问题,但是我是刚刚注册csdn,没有多少分可以给大家,我想大家来这也不是光为了分吧,真的很感谢你们给我的帮助!谢谢!