VB脚本数学函数

时间:2009-04-01 01:18:33

标签: math function asp-classic vbscript

我有一个ASP页面,其中有2个变量,strActualRatestrProposed。 值为:

strActualRate = 33.30
strProposed = 33.3

所以当我写下以下行进行比较时:

if strActualRate <> strProposed  then
  Response.Writr "Both are not equal!"
end if

我得到输出“两者不相等”,即使两者都是相同的。 我确信我需要使用一些数学转换函数进行比较。

谁能告诉我如何解决这个问题?

提前致谢!

4 个答案:

答案 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)

您打算以字符串,浮点数或其他方法执行比较吗?如果你将它们作为字符串进行比较,那么显然它们并不相同,因为其中一个在结尾处有一个额外的零。如果您将它们作为浮点数进行比较,那么您通常希望使用包含差异并检查它是否小于某个小值的比较。这是因为浮点数计算涉及某种程度的不准确性,并且由于基础表示,它们之间的比较可能会失败。