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

[问题求助] 求助vbs脚本计算数字和比较大小问题

[复制链接]
发表于 2023-3-17 18:24:24 | 显示全部楼层 |阅读模式
  1. Dim h,g,m,hmsg,gmsg,mmsg
  2. hmsg="请输入CPU核心数:"
  3. h=InputBox(hmsg)
  4. MsgBox h
  5. h=CDbl(h)
  6. gmsg="请输入CPU频率:"
  7. g=InputBox(gmsg)
  8. MsgBox g
  9. g=CDbl(g)
  10. mmsg="请输入内存大小(不建议频率低于2133MHZ):"
  11. m=InputBox(mmsg)
  12. MsgBox m
  13. m=CDbl(m)
  14. Dim cr,cmr,crl,cmrl
  15. crl = 0.9
  16. cmrl = 0.2
  17. cr = Int(h)*Int(g)*crl
  18. cmr = Int(h)*Int(g)*Int(m)*cmrl
  19. MsgBox cmr
  20. MsgBox cr
  21. If cr > cmr Then       
  22.         MsgBox cmr       
  23. ElseIf cmr > cr Then       
  24.         MsgBox cr       
  25. ElseIf cmr = cr Then
  26.         MsgBox cr       
  27. End If
复制代码
为什么这个代码最后输出不是h*g*m*0.2或者h*g*0.9啊
小弟不大懂 跪求大佬解答
发表于 2023-3-17 18:48:23 | 显示全部楼层
本帖最后由 jyswjjgdwtdtj 于 2023-3-17 18:53 编辑

回复 1# Pangda5268


    所以你要输出什么呢?
你要输出一个字符串还是一个数字?
如果你想输出一个数字 那么一点问题也没有
如果是字符串 那就

  1. cr = Int(h)&"*"&Int(g)&"*"&crl
  2. cmr = Int(h)&"*"&Int(g)&"*"&Int(m)&"*"&cmrl
复制代码
 楼主| 发表于 2023-3-17 19:19:53 | 显示全部楼层
回复 2# jyswjjgdwtdtj


    大佬这是我改的 我想输出的是数字     但是下方这个代码为啥输入小数就会出错啊            我想最后对比cmr和cr的大小   输出更大的那个的数值
Dim h,g,m,hmsg,gmsg,mmsg

hmsg="请输入CPU核心数:"

h=InputBox(hmsg)

gmsg="请输入CPU频率:"

g=InputBox(gmsg)

mmsg="请输入内存大小(不建议频率低于2133MHZ):"

m=InputBox(mmsg)

cr=h*g*0.9

cmr=h*g*m*0.2

MsgBox(cmr)

MsgBox(cr)

If cr > cmr Then
       
        MsgBox(cmr)
       
ElseIf cmr > cr Then
       
        MsgBox(cr)
       
ElseIf cmr = cr Then

        MsgBox(cr)
       
End If
发表于 2023-3-17 19:34:25 | 显示全部楼层
小数不应该会有错误啊
我试了一下也没问题啊
输入数据:4,0.4,0.04
发表于 2023-3-17 19:34:57 | 显示全部楼层
你是不是输入什么分数或者用了中文符号啊?
 楼主| 发表于 2023-3-18 14:41:07 | 显示全部楼层
回复 5# jyswjjgdwtdtj

大佬这是我的代码

我输入的数据是6   5.3    32
vbs文件用的是ansi
它显示:
行:21
字符:1
错误:类型不匹配:"[string:"5.3"]'
代码:800A000D
源:Microsoft VBScript 运行时错误
  1. Dim h,g,m,hmsg,gmsg,mmsg

  2. hmsg="CPU core:"

  3. h=InputBox(hmsg)

  4. If h>8 Then

  5. h=8

  6. End If

  7. gmsg="CPU frequency:"

  8. g=InputBox(gmsg)

  9. mmsg="RAM:"

  10. m=InputBox(mmsg)

  11. c2=h*g

  12. cm2=h*g*m

  13. cr=c2*1

  14. cmr=cm2*3/10

  15. cmrz=Round(cmr, 0)

  16. crz=Round(cr, 0)

  17. If crz > cmrz Then
  18.        
  19.         MsgBox(cmrz)
  20.        
  21. ElseIf cmrz > crz Then
  22.        
  23.         MsgBox(crz)
  24.        
  25. ElseIf cmrz = crz Then

  26.         MsgBox(crz)
  27.        
  28. End If



复制代码
发表于 2023-3-18 15:16:47 | 显示全部楼层
回复 6# Pangda5268


    嘶 我是怎么也报不了错啊
老实回答 你到底是怎么搞的?
要么你就在每个inputbox外面加个cdbl

h=cdbl(inputbox("xxx"))
发表于 2023-3-18 16:34:47 | 显示全部楼层
本帖最后由 czjt1234 于 2023-3-18 16:39 编辑

回复 6# Pangda5268


   你的代码我在win7x64上测试没问题,也是输入的你指定的数值
根据demon的最佳推荐http://demon.tw/programming/vbs-add-two-number.html

修改如下,你再试下

  1. Dim h, g, m, hmsg, gmsg, mmsg

  2. hmsg = "CPU core:"
  3. h = 0 + InputBox(hmsg)
  4. If h > 8 Then
  5.     h = 8
  6. End If
  7. gmsg = "CPU frequency:"
  8. g = 0 + InputBox(gmsg)
  9. mmsg = "RAM:"
  10. m = 0 + InputBox(mmsg)
  11. c2 = h * g
  12. cm2 = h * g * m
  13. cr = c2 * 1
  14. cmr = cm2 * 3 / 10
  15. cmrz = Round(cmr, 0)
  16. crz = Round(cr, 0)
  17. If crz > cmrz Then
  18.     MsgBox cmrz
  19. ElseIf cmrz > crz Then
  20.     MsgBox crz
  21. ElseIf cmrz = crz Then
  22.     MsgBox crz
  23. End If
复制代码

评分

参与人数 1技术 +3 收起 理由
Pangda5268 + 3 谢谢!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 05:09 , Processed in 0.020698 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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