难道是函数调用的错误吗?!

oxfordxyc 2002-05-02 06:09:59
我刚刚开始学vb,我想请大家帮个忙:我想text1的值经过函数计算之后填到text2里面,请问为什么我得不到这个值呢?哪位能不能帮我改一下。不胜感激:)

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim ss As Double
Dim sss As Double
ss = Val(Trim(Text1.Text))

If KeyAscii = 13 Then
Text2.Text = mdPrecisionBy1(ss, 1)

End If
End Sub

Public Function mdPrecisionBy1(strength As Double, d As Integer) '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
strength = Rstrength + x / k
End Function
...全文
50 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oxfordxyc 2002-05-03
  • 打赏
  • 举报
回复
谢谢各位大哥帮我解决了问题,但是我是刚刚注册csdn,没有多少分可以给大家,我想大家来这也不是光为了分吧,真的很感谢你们给我的帮助!谢谢!
ayusay 2002-05-02
  • 打赏
  • 举报
回复
同意楼上
xxlroad 2002-05-02
  • 打赏
  • 举报
回复
qbilbo(风之兄) 说的对
cwbboy 2002-05-02
  • 打赏
  • 举报
回复
还有你函数的最后一句应该改成:
错误的:
strength = Rstrength + x / k

正确的:
mdPrecisionBy1= Rstrength + x / k

其实就是将strength 改成你的函数名:mdPrecisionBy1


cwbboy 2002-05-02
  • 打赏
  • 举报
回复
'大哥,你的函数没有返回值,现在将你的错误跟 我的正确的对比一下:

错误的:
Public Function mdPrecisionBy1(strength As Double, d As Integer)

正确的:
Public Function mdPrecisionBy1(strength as Double d As Integer) as Double  

其实我的只不过比你的代码,在后面多了一个 "as Double "而己,这样的话,你的函数就可以返回值了。
diudiu2002 2002-05-02
  • 打赏
  • 举报
回复
同意楼上的!
IsMe 2002-05-02
  • 打赏
  • 举报
回复
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
qbilbo 2002-05-02
  • 打赏
  • 举报
回复
你的函数没有返回值!
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
这样应该可以了。但你这个函数的算法好象有问题,返回值不一定是你想要的。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧