Board logo

标题: [问题求助] 求助vbs脚本计算数字和比较大小问题 [打印本页]

作者: Pangda5268    时间: 2023-3-17 18:24     标题: 求助vbs脚本计算数字和比较大小问题

  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啊
小弟不大懂 跪求大佬解答
作者: jyswjjgdwtdtj    时间: 2023-3-17 18:48

本帖最后由 jyswjjgdwtdtj 于 2023-3-17 18:53 编辑

回复 1# Pangda5268


    所以你要输出什么呢?
你要输出一个字符串还是一个数字?
如果你想输出一个数字 那么一点问题也没有
如果是字符串 那就
  1. cr = Int(h)&"*"&Int(g)&"*"&crl
  2. cmr = Int(h)&"*"&Int(g)&"*"&Int(m)&"*"&cmrl
复制代码

作者: Pangda5268    时间: 2023-3-17 19:19

回复 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
作者: jyswjjgdwtdtj    时间: 2023-3-17 19:34

小数不应该会有错误啊
我试了一下也没问题啊
输入数据:4,0.4,0.04
作者: jyswjjgdwtdtj    时间: 2023-3-17 19:34

你是不是输入什么分数或者用了中文符号啊?
作者: Pangda5268    时间: 2023-3-18 14:41

回复 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. MsgBox(cmrz)
  19. ElseIf cmrz > crz Then
  20. MsgBox(crz)
  21. ElseIf cmrz = crz Then
  22. MsgBox(crz)
  23. End If
复制代码

作者: jyswjjgdwtdtj    时间: 2023-3-18 15:16

回复 6# Pangda5268


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

h=cdbl(inputbox("xxx"))
作者: czjt1234    时间: 2023-3-18 16:34

本帖最后由 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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2