【问题标题】:VB script math functionVB脚本数学函数
【发布时间】:2009-04-01 01:18:33
【问题描述】:

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

strActualRate = 33.30
strProposed = 33.3

所以当我写下面一行来比较时:

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

我得到输出“两者不相等”,即使两者相同。 我确定我需要使用一些数学转换函数来比较。

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

提前致谢!

【问题讨论】:

  • 请清除逻辑错误。它会返回“两者不相等”或“两者都相等”吗?
  • 抱歉是类型错误我得到的实际输出是两者都不相等

标签: math function asp-classic vbscript


【解决方案1】:

如果我理解正确,您认为这两个值相等,但因为 VBScript 比较的是字符串而不是数字,所以这两个值返回不相等。

你的转换思路是对的,代码如下:

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

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

【讨论】:

  • 如果值实际上是字符串(与代码显示的相反),则在比较它们之前会将两个值转换为 33。例如,如果值是“33.1”和“33.4”,它们最终也会相等。
  • 不,双打有小数部分。 CDbl() 会将它们保留为 33.3。 CInt() 会将它们转换为 33。
【解决方案2】:

你的问题并没有真正加起来,所以我不太确定问题是什么。我会尝试澄清一些关于数据类型和比较的事情。

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

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

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

如果您确实将字符串值分配给变量,代码将输出“Both are not equal!”。这与预期的一样,因为字符串不相等。如果您有字符串并想将它们作为数值进行比较,则必须将它们转换:

If CDbl(strActualRate) <> CDbl(strProposed)  Then
  Response.Write "Both are not equal!"
End If

【讨论】:

  • 谢谢 Guffa,是的,当我在这里发帖时,我的输入错误。其实我只是在寻找转换方法
【解决方案3】:

尝试使用CDbl()在比较语句中将值转换为双精度

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2021-07-18
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多