代码之家  ›  专栏  ›  技术社区  ›  Shyju

VB脚本数学函数

  •  0
  • Shyju  · 技术社区  · 17 年前

    我有一个ASP页面,其中有2个变量, strActualRate strProposed . 这些值是:

    strActualRate = 33.30

    因此,当我写下以下行进行比较时:

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

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

    有人能告诉我如何解决这个问题吗?

    提前感谢!

    4 回复  |  直到 16 年前
        1
  •  3
  •   paxdiablo    17 年前

    如果我理解正确的话,你认为这两个值是相等的,但由于VBScript比较的是字符串而不是数字,所以这两个结果是不相等的。

    您的转换想法是正确的,以下是代码:

    if CDbl(strActualRate) <> CDbl(strProposed) then
         Response.Write "Both are not equal!"
    end if
    

    这将把字符串值转换为数字以进行比较。

        2
  •  1
  •   Guffa    17 年前

    你的问题加起来不太清楚,所以我不确定问题是什么。我会尽量澄清一些关于数据类型和比较的问题。

    您正在为变量使用前缀“str”,这表明您打算在其中存储字符串值,但实际上是在其中存储数值。要么你对如何使用匈牙利符号来跟踪数据类型感到困惑,要么你发布的代码看起来不像你实际使用的代码。

    数值33.30与数值33.3完全相同。如果你改为使用字符串值“33.30”和“33.3”,它们将是两个不相等的字符串。

    如果您的代码被更正(Response.Write而不是Response.Writer)以使其运行,则它根本不会产生任何输出。由于值相等,if语句中的条件计算结果为false。

    如果你确实为变量分配了字符串值,代码将输出“两者都不相等!”。这正如预期的那样,因为字符串不相等。如果你有字符串并想将其作为数值进行比较,你必须对它们进行比较:

    If CDbl(strActualRate) <> CDbl(strProposed)  Then
      Response.Write "Both are not equal!"
    End If
    
        3
  •  0
  •   Kevin Tighe    17 年前

    尝试在比较语句中将值转换为double CDbl()

        4
  •  0
  •   1800 INFORMATION    17 年前

    您打算以字符串、浮点数或其他方法进行比较吗?如果你将它们作为字符串进行比较,那么很明显它们是不相等的,因为其中一个字符串的末尾有一个额外的零。如果你将它们作为浮点数进行比较,那么你通常希望使用一种比较方法,即取差值并检查它是否小于某个小值。这是因为浮点数计算涉及一定程度的不准确性,并且由于底层表示,它们之间的比较可能会失败。

    推荐文章