明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1215|回复: 2

为什么 "10+" 被认为是数字?

[复制链接]
发表于 2007-1-15 13:43:00 | 显示全部楼层 |阅读模式

'我在处理文字时, 发现 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

'这是为什么?

发表于 2007-1-15 14:09:00 | 显示全部楼层
VBS中,IsNumeric()函数的实际作用是判断参数表达式是否是数值,而这个所谓的“数值”不仅仅包含普通的数字,还包括(但可能不限于)如下情况:

  科学计数法表达式,如“2e7”和“2d7”;   十六进制数,如“&H0A”;   八进制数,如“&6”;   当前区域下设置的货币金额表达式,如“¥12.44”;   加圆括号的数字,如“(34)”;   显式指定正负的数字,如“+2.1”和“-2.1”;   含有逗号的数字字符串,如“12,25”。

  不仅仅是VBS,JScript/JavaScript的isNaN()也存在类似问题,T-SQL中的IsNumeric()同样如此!大家可以自行研究。

  所以,如果你已经开始对自己以前的写过的程序有些不放心了,那么以后还是自己实现一个函数来验证表达式是否是数字比较稳妥。

 楼主| 发表于 2007-1-15 14:42:00 | 显示全部楼层

谢谢版主。

我以前用C的时候,自己编了个程序来检查是否为数字,比较畅通。

现在用IsNumeric()函数时,出了不少错误。还以为是Bug呐。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 20:34 , Processed in 0.171944 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表