“1”怎么会大于50呢?
How can "1" be greater than 50?
我对以下内容感到困惑,希望我能学到一些东西。
当我运行下面的代码:
<%
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
如果操作数是一个数字和一个字符串比较是将字符串转换为 Double 并执行数字比较。如果 String 无法转换为 Double,则会抛出 InvalidCastException。
我正在使用 ASP 版本 5.8,内部版本号 18525。
我不需要解决方法,因为我有一个解决方法,但我想知道这是否有原因,因为这是一个容易犯的错误。
编辑:选择的正确答案有一个评论,其中进一步 link 详细说明了两次比较之间的区别。
您正在查看 .NET 文档,同时使用 VBScript(不是 .NET 语言)。引用 VBScript 语言参考,然后在将字符串与数字进行比较时,
The numeric expression is less than the string expression.
第二个 if
的计算结果为 False
的原因是 the way VBScript treats variables and literals differently in comparisons。因为您有一个文字数字,所以文字字符串 是 正在按照您最初的预期进行转换。
我对以下内容感到困惑,希望我能学到一些东西。 当我运行下面的代码:
<%
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 如果操作数是一个数字和一个字符串比较是将字符串转换为 Double 并执行数字比较。如果 String 无法转换为 Double,则会抛出 InvalidCastException。
我正在使用 ASP 版本 5.8,内部版本号 18525。
我不需要解决方法,因为我有一个解决方法,但我想知道这是否有原因,因为这是一个容易犯的错误。
编辑:选择的正确答案有一个评论,其中进一步 link 详细说明了两次比较之间的区别。
您正在查看 .NET 文档,同时使用 VBScript(不是 .NET 语言)。引用 VBScript 语言参考,然后在将字符串与数字进行比较时,
The numeric expression is less than the string expression.
第二个 if
的计算结果为 False
的原因是 the way VBScript treats variables and literals differently in comparisons。因为您有一个文字数字,所以文字字符串 是 正在按照您最初的预期进行转换。