“1”如何大于50?

时间:2016-11-18 13:11:08

标签: vbscript asp-classic type-conversion

我对以下内容感到困惑,希望我能学到一些东西。 当我运行以下代码时:

<%
Response.Write "ss = ""1""<br/>"
ss = "1"
Response.Write "ii = 50<br/>"
ii = 50
Response.Write "ss >= ii "
If ss >= ii Then Response.Write "True?" Else Response.Write "False"
Response.Write "<br/>""1"" >= 50 "
If "1" >= 50 Then Response.Write "True" Else Response.Write "False"
%>

它写道:

ss = "1"
ii = 50
ss >= ii True?
"1" >= 50 False

MSDN says 如果操作数是一个数字和一个字符串比较是字符串转换为双精度并执行数字比较。如果String无法转换为Double,则抛出InvalidCastException。

我正在使用ASP版本5.8,内部版本号为18525。

我不需要解决方法,因为我有一个,但我想知道是否有理由这样做,因为这是一个容易犯的错误。

编辑:选择正确的答案有一个评论,并进一步链接到两个比较之间差异的详细信息。

1 个答案:

答案 0 :(得分:6)

您正在查看.NET的文档,同时使用VBScript(不是.NET语言)。引用VBScript语言引用,然后将字符串与数字进行比较时,

  

数值表达式小于字符串表达式。

Source

您的第二个if评估为False的原因是the way VBScript treats variables and literals differently in comparisons。因为您有一个文字编号,所以文字字符串 按照您最初的预期进行转换。