经典ASP变量比较问题

时间:2013-07-12 15:25:39

标签: ms-access asp-classic

我继承了一个非常大的经典ASP网站,最近发现了一个错误。它多次从Access数据库读取和写入,并且所有这些都按预期工作。但是,我认为这部分代码存在错误:

Dim SeptAvg, mvUPreq, mvSeptAvg

SeptAvg = CDbl(rs.fields(5))
mvUPreq = -0.15

        if SeptAvg <= mvUPreq then 
            mvSeptAvg = true 
         else 
            mvSeptAvg = false 
         end if 

现在在这种情况下,访问数据库中的SeptAvg是-8.5%。这个表达式应该评估为True - 但事实并非如此。在此代码之后,有一个Access数据库的更新,它将字段(在Access数据库中是一个复选框)设置为true或false。该复选框始终未选中。我检查并重新检查了数据库更新代码,我知道那里没有错误。 CDbl是否在数据库的-8.5%值上发生了什么?

请指教,因为我的经典ASP体验非常有限。

3 个答案:

答案 0 :(得分:2)

-8.5% = -0.085-0.085确实大于-0.15。这就是它评估true

的原因
-1 > -10
Abs(1) < Abs(10)
1 < 10

答案 1 :(得分:1)

-8.5%表示为小数是-0.085

因此If条件等同于......

if -0.085 <= -0.15 then

但-0.085大于-0.15,因此条件不是True,因此mvSeptAvg不会设置为True

答案 2 :(得分:1)

如果您希望将其评估为TRUE,则需要稍微调整一下代码:

Dim SeptAvg, mvUPreq, mvSeptAvg  

SeptAvg = CDbl(rs.fields(5))
mvUPreq = -0.15

if abs(SeptAvg) <= abs(mvUPreq) then 
   mvSeptAvg = true 
else 
   mvSeptAvg = false 
end if