ASP Classic溢出

5 overflow asp-classic

我想知道是否有人可以帮助我,因为我已经对我认为是一个简单错误的简单原因视而不见.

我有这个代码:

 doRound1(x1)
  denom1 = 5
  y1 = denom1 - x1 mod denom1
  if y1 <> denom1 then
    x1= x1+y1
  end if

  doRound1=x1
 End function

 'theCalc = 20488888888.684
  theCalc = cDbl(11111111111) * 1.844
  doRound1(theCalc)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

Microsoft VBScript runtime  error '800a0006'
Overflow: 'x1'
Run Code Online (Sandbox Code Playgroud)

在上面的代码中由此行引起:

 y1 = denom1 - x1 mod denom1
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?正如我所说,我今晚失明了

C. *_*oss 1

我相信,当您没有具体定义这些值时,ASP Classic 会假定数值为 int(仅为 32767)。尝试强迫你的价值观是长的

 Function doRound1(x1)
  x1 = CDbl(x1)
  denom1 = CDbl(5)
  y1 = denom1 - x1 mod denom1
  if y1 <> denom1 then
    x1= x1+y1
  end if

  doRound1=x1
 End function
Run Code Online (Sandbox Code Playgroud)

注意:我还没有实际测试过这个。