经典ASP FormatPercent忽略100%?
下面的代码计算出我的数据的百分比。所有的工作都很好,除了100%应该是红色的(#B20000),但实际上是绿色的(#32CD32)。我添加了一个特别指100%的选项,但即使这样也没有效果。有任何想法吗?由于经典ASP FormatPercent忽略100%?
R = FormatPercent(objRsStat("active_beds")/objRsStat("total_beds"), 2)
'R = objRsStat("percent_remaining")
If R =< "60%" Then
CL = "#32CD32"
ElseIf R => "61%" And R =< "79%" Then
CL = "#FF8000"
ElseIf R => "80%" Then
CL = "#B20000"
ELSEIF R = "100%" Then
CL = "#B20000"
END IF
更新的代码(有误差):
If R <= 0.6 Then
CL = "#32CD32"
ELSEIF R => 0.61 AND R <= 0.79 THEN
CL = "#FF8000"
ELSEIF R => 0.80 THEN
CL = "#B20000"
END IF
您使用了错误的语法。 <= "60%"
将比较数字值R
到字符串“60%”。 VBScript不会抱怨这一点,因为它是宽松的设计,但这也会导致无声的问题 - 就像你正在经历的那样。
您还正在使用不正确的代码,甚至无法运行:“小于或等于”运算符为<=
而不是=<
)。
试试这个:
If R <= 0.6 Then
CL = "#32CD32"
(你还需要删除FormatPercent
函数调用,否则你会得到一个类型不匹配的错误。)
感谢您的回答。我已经尝试使用您的建议,以改变这一点,但我得到类型不匹配 - [R 当前的代码: 若R 0.61和R 0.80 THEN CL =“#B20000” END IF –
删除FormatPercent函数调用。 – Dai
啊,谢谢。这现在正在工作(标记为已回答)。 –
你不能比较的字符串值,并期望它表现得像数值。测试原始百分比*('R =>“61%”并不意味着你的想法)*'objRsStat(“active_beds”)/ objRsStat(“total_beds”)'。 – Lankymart
它目前的工作原理 - 当从字符串更改为数字它引发了一个很好的错误。这只是它挣扎的100%的数字。 99%是好的,所以我猜它在某处变得困惑,并没有把100%视为100% - 就像100%实际上被认为是0%类型场景 –
不要做出假设,请参阅@dai [answer below](http: //stackoverflow.com/a/39960810/692942)。 – Lankymart