我有一个ASP页面,其中有2个变量,strActualRate
和strProposed
。
值为:
strActualRate
= 33.30
strProposed
= 33.3
所以当我写下以下行进行比较时:
if strActualRate <> strProposed then
Response.Writr "Both are not equal!"
end if
我得到输出“两者不相等”,即使两者都是相同的。 我确信我需要使用一些数学转换函数进行比较。
谁能告诉我如何解决这个问题?
提前致谢!
答案 0 :(得分:3)
如果我理解正确,你认为这两个值是相等的,但因为VBScript正在比较字符串而不是数字,而这两个值又回来了不相等。
你的转换理念是正确的,这是代码:
if CDbl(strActualRate) <> CDbl(strProposed) then
Response.Write "Both are not equal!"
end if
这会将您的字符串值转换为数字以进行比较。
答案 1 :(得分:1)
你的问题并没有真正加起来,所以我不确定问题是什么。我将尝试澄清有关数据类型和比较的一些事情。
您正在为变量使用前缀“str”,这表示您打算在其中存储字符串值,但是您要在其中存储数值。你是否对使用匈牙利符号来跟踪数据类型感到困惑,或者你发布的代码看起来不像你实际使用的代码。
数值33.30与值33.3完全相同。如果您使用字符串值“33.30”和“33.3”,则它们将是两个不相等的字符串。
如果您的代码已更正(Response.Write而不是Response.Writr)以便它运行,它将根本不会产生任何输出。当值相等时,if语句中的condifion将计算为false。
如果你确实为变量分配了字符串值,代码将输出“两者不相等!”。这与字符串不相等一样正如预期的那样。如果您有字符串并希望将它们作为数值进行比较,则必须将它们转换为:
If CDbl(strActualRate) <> CDbl(strProposed) Then
Response.Write "Both are not equal!"
End If
答案 2 :(得分:0)
尝试使用CDbl()
在比较语句中将值转换为double答案 3 :(得分:0)
您打算以字符串,浮点数或其他方法执行比较吗?如果你将它们作为字符串进行比较,那么显然它们并不相同,因为其中一个在结尾处有一个额外的零。如果您将它们作为浮点数进行比较,那么您通常希望使用包含差异并检查它是否小于某个小值的比较。这是因为浮点数计算涉及某种程度的不准确性,并且由于基础表示,它们之间的比较可能会失败。