找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11341|回复: 7

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

[复制链接]
发表于 2023-5-9 19:56:05 | 显示全部楼层 |阅读模式
我制作的计算器中不管选择哪种运算,两个数字输入完后会报错:变量使用了一个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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2023-5-9 20:13:18 | 显示全部楼层
因为cdbl函数需要将变量放在等号左边,然后是把cdbl的返回值赋值给等号左边的变量,示例:
a=cdbl(b)

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2023-5-9 21:15:41 | 显示全部楼层
  1. Function MUL(a,b)
  2.         CDbl(a)
  3.         CDbl(b)
  4.         s=a*b
  5.         MUL=s
  6. End Function
复制代码
你这什么鬼?
发表于 2023-5-9 21:17:21 | 显示全部楼层
cdbl是一个函数!一般来说函数都是不改变参数的值的!
你可以理解为

  1. function cdbl(byval str)
  2. 'str被一系列操作
  3. cdbl=str
  4. end function
复制代码
发表于 2023-5-9 21:18:33 | 显示全部楼层
还有你直接除不行么?
vbs作为一门脚本语言 这种自动的变量类型转换功能还是有的
 楼主| 发表于 2023-5-9 23:24:05 | 显示全部楼层
回复 5# jyswjjgdwtdtj 好吧确实可以
 楼主| 发表于 2023-5-9 23:26:16 | 显示全部楼层
回复 3# jyswjjgdwtdtj 不好意思,发现报错以后我还以为是什么大小写啊,什么括号里的内容格式不对什么的,我也是后来才发现忘了把返回值赋值给变量,会表示已解决的
 楼主| 发表于 2023-5-9 23:27:39 | 显示全部楼层
回复 4# jyswjjgdwtdtj
回复 3# jyswjjgdwtdtj 不好意思,发现报错以后我还以为是什么大小写啊,什么括号里的内容格式不对什么的,我也是后来才发现忘了把返回值赋值给变量,会表示已解决的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:46 , Processed in 0.020308 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表