我的VB脚本中的cint溢出错误

时间:2011-04-13 16:10:46

标签: vbscript

我是编程和使用基本的VB脚本编程课程的新手,这是我正在学习的学位的要求。我有这个程序,将摄氏数字转换为farhenheit并以增量和要查看的数量进行。这个程序在视觉逻辑流程图中工作得很好,我花了超过25个小时才试图让这个程序工作。我知道它必须是完全愚蠢的东西,但对编程世界来说是新手我不知所措,并且没有答案。有人可以看看这个剧本,这是非常基本的,看看是否有我遗漏的东西。在fahtemp =(9/5)* tempaccum + 32之后,错误总是出现。任何insite都会非常感激。提前谢谢您的时间。乔恩

Option Explicit
Dim celtemp, amttemp, increment 
Dim newtemp, tempaccum, fahtemp, loopnum, templist

celtemp = inputbox("What is your starting Temp?")
amttemp = inputbox("How many temperatures do you want displayed?")
increment = inputbox("What temperature increments do you want?")

Do while loopnum < amttemp

    loopnum = loopnum +1
    If loopnum = 1 then
        tempaccum = celtemp
        fahtemp = (9/5) * (tempaccum) +32
        templist = "1." & "Cel Temp: " &tempaccum & "- " & "Fah Temp: " &fahtemp
    else
        tempaccum = tempaccum + increment
        fahtemp = (9/5) * tempaccum + 32
        templist = templist &" " &loopnum & "." & "Cel Temp: " &tempaccum & "- " & "Fah Temp: " &fahtemp
    End If

    newtemp = celtemp + increment

Loop

Document.write "We are starting at Temp: " &celtemp
Document.write "<br> We are displaying " &amttemp & "times."
Document.write "<br> We are incrementing by: " &increment
Document.write "<br> The Temperature Table is as follows: " &templist

2 个答案:

答案 0 :(得分:1)

当您尝试存储大于数据类型可以处理的值时,会发生溢出错误。

如果您的输入太大,您将遇到此错误。

答案 1 :(得分:1)

@Jon Gammon:tempaccum = tempaccum + increment没有像你想象的那样计算,而不是像它是一个数字那样添加增量,它就像一个字符串一样连接它,即如果起始温度是{{1} },增量为{​​{1}},显示的次数为10,您希望输出为

5

相反,你会得到

3

这是导致溢出的原因,因为1. Cel Temp: 10 - Fah Temp: 50 2. Cel Temp: 15 - Fah Temp: 59 3. Cel Temp: 20 - Fah Temp: 68 变得很大,并且它的进一步乘法会破坏脚本。 1. Cel Temp: 10 - Fah Temp: 50 2. Cel Temp: 105 - Fah Temp: 221 3. Cel Temp: 1055 - Fah Temp: 1931 也不是有效的VBScript代码,因此我将其转换为tempaccum

这是一个经过工作和测试的脚本副本,我重写了一点,以解决上述问题,并对其进行一些改进:

Document.Write



更新

  

我的课程非常基础,我们没有使用过函数,我们唯一能做的就是输入,while循环,Case Select和If。所以我已经完全试图将其编码。虽然你的工作非常出色,但我担心它比我们现在的位置更先进。

我明白了,好吧,我已经回到了原始脚本,只更新了破坏它的部分,如前所述。 以下是新的工作副本

MsgBox