Vbscript “怎么可能?”;1“;大于50?

Vbscript “怎么可能?”;1“;大于50?,vbscript,asp-classic,type-conversion,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 "

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

<%
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"
%>
如果操作数为一个数字,且为一个字符串比较,则字符串将转换为双精度,并执行数字比较。如果字符串不能转换为Double,则抛出InvalidCastException

我使用的是ASP版本5.8,版本号18525

我不需要一个解决办法,因为我有一个,但我想知道是否有这样的原因,因为这是一个容易犯的错误


编辑:选择的正确答案中有一条注释,该注释带有指向两个比较之间差异细节的进一步链接。

您正在查看.NET文档,同时使用VBScript(不是.NET语言)。要引用VBScript语言引用,则在比较字符串和数字时

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


第二个
if
计算为
False
的原因是。因为您有一个文字编号,所以文字字符串将按照您最初的预期进行转换。

您正在查看.NET文档,同时使用VBScript(不是.NET语言)。要引用VBScript语言引用,则在比较字符串和数字时

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


第二个
if
计算为
False
的原因是。因为您有一个文字编号,所以文字字符串将按照您最初的预期进行转换。

实际上
版本5.8
可能指的是VBScript版本。如果CLng(x)>CLng(y),则可能重复使用
然后
实际上
版本5.8
可能指的是VBScript版本。如果CLng(x)>CLng(y),则可能重复使用
,然后
啊,是的,谢谢。这就解释了第一个比较,意味着它是正确的,但我认为第二个比较是错误的?@Banzivar这是因为由于与VB6向后兼容的原因,对文字的处理显然是不同的。显然,这只是一个在当时还不足以修复的bug。-这里已经讲到了。啊,是的,谢谢。这就解释了第一个比较,意味着它是正确的,但我认为第二个比较是错误的?@Banzivar这是因为由于与VB6向后兼容的原因,对文字的处理显然是不同的。显然,这只是一个在当时还不足以修复的bug。-这里已经讲过了。
ss = "1"
ii = 50
ss >= ii True?
"1" >= 50 False