[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]为什么VBS使用CDbl函数来将变量转化成双精度浮点数,但是运行报错

我制作的计算器中不管选择哪种运算,两个数字输入完后会报错:变量使用了一个VBScript中不支持的Automation类型‘CDbl’,但是因为inputbox返回的是字符串,所以我用cdbl来转化成双精度浮点数有什么错,这里关于自己定义的函数的名称,MUL是做乘法的函数,DIV是做除法的,ADD是做加法的,aSUB是做减法的,为什么现在会报错?代码如下:
  1. Function MUL(a,b)
  2. CDbl(a)
  3. CDbl(b)
  4. s=a*b
  5. MUL=s
  6. End Function
  7. Function DIV(a,b)
  8. CDbl(a)
  9. CDbl(b)
  10. s=a/b
  11. DIV=s
  12. End Function
  13. Function ADD(a,b)
  14. CDbl(a)
  15. CDbl(b)
  16. s=a+b
  17. ADD=s
  18. End Function
  19. Function aSUB(a,b)
  20. CDbl(a)
  21. CDbl(b)
  22. s=a-b
  23. aSUB=s
  24. End Function
  25. Dim sel,user_inputa,user_inputb,output
  26. sel=InputBox("选择一种运算:1=乘法;2=除法;3=加法;4=减法","计算器")
  27. If sel="1" Then
  28. user_inputa=InputBox("a:","计算器")
  29. user_inputb=InputBox("b:","计算器")
  30. output=MUL(user_inputa,user_inputb)
  31. MsgBox output,vbokonly,"输出"
  32. ElseIf sel="2" Then
  33. user_inputa=InputBox("a","计算器")
  34. user_inputb=InputBox("b","计算器")
  35. output=DIV(user_inputa,user_inputb)
  36. MsgBox output,vbokonly,"输出"
  37. ElseIf sel="3" Then
  38. user_inputa=InputBox("a","计算器")
  39. user_inputb=InputBox("b","计算器")
  40. output=ADD(user_inputa,user_inputb)
  41. MsgBox output,vbokonly,"输出"
  42. ElseIf sel="4" Then
  43. user_inputa=InputBox("a","计算器")
  44. user_inputb=InputBox("b","计算器")
  45. output=aSUB()
  46. MsgBox output,vbokonly,"输出"
  47. End If
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

因为cdbl函数需要将变量放在等号左边,然后是把cdbl的返回值赋值给等号左边的变量,示例:
a=cdbl(b)
1

评分人数

TOP

  1. Function MUL(a,b)
  2. CDbl(a)
  3. CDbl(b)
  4. s=a*b
  5. MUL=s
  6. End Function
复制代码
你这什么鬼?

TOP

cdbl是一个函数!一般来说函数都是不改变参数的值的!
你可以理解为
  1. function cdbl(byval str)
  2. 'str被一系列操作
  3. cdbl=str
  4. end function
复制代码

TOP

还有你直接除不行么?
vbs作为一门脚本语言 这种自动的变量类型转换功能还是有的

TOP

回复 5# jyswjjgdwtdtj 好吧确实可以

TOP

回复 3# jyswjjgdwtdtj 不好意思,发现报错以后我还以为是什么大小写啊,什么括号里的内容格式不对什么的,我也是后来才发现忘了把返回值赋值给变量,会表示已解决的

TOP

回复 4# jyswjjgdwtdtj
回复 3# jyswjjgdwtdtj 不好意思,发现报错以后我还以为是什么大小写啊,什么括号里的内容格式不对什么的,我也是后来才发现忘了把返回值赋值给变量,会表示已解决的

TOP

返回列表