为什么 "10+" 被认为是数字?
'我在处理文字时, 发现 VBA 的 IsNumeric() 函数把 "10+" 这样的字符串'认为是数字字符串. 如下面的程序的条件语句被设置为 "True"
Sub test()
Dim str As String
str = "10+" 'or "10-"
If IsNumeric(str) Then
MsgBox Chr(34) & str & Chr(34) & " is a numeric string"
Else
MsgBox Chr(34) & str & Chr(34) & " is not a numeric string"
End If
End Sub
'这是为什么?
VBS中,IsNumeric()函数的实际作用是判断参数表达式是否是数值,而这个所谓的“数值”不仅仅包含普通的数字,还包括(但可能不限于)如下情况: 科学计数法表达式,如“2e7”和“2d7”; 十六进制数,如“&H0A”; 八进制数,如“&6”; 当前区域下设置的货币金额表达式,如“¥12.44”; 加圆括号的数字,如“(34)”; 显式指定正负的数字,如“+2.1”和“-2.1”; 含有逗号的数字字符串,如“12,25”。
不仅仅是VBS,JScript/JavaScript的isNaN()也存在类似问题,T-SQL中的IsNumeric()同样如此!大家可以自行研究。
所以,如果你已经开始对自己以前的写过的程序有些不放心了,那么以后还是自己实现一个函数来验证表达式是否是数字比较稳妥。
谢谢版主。
我以前用C的时候,自己编了个程序来检查是否为数字,比较畅通。
现在用IsNumeric()函数时,出了不少错误。还以为是Bug呐。
页:
[1]