乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 36|回复: 2

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

[复制链接]

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 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
'这是为什么?
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 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()同样如此!大家可以自行研究。
  所以,如果你已经开始对自己以前的写过的程序有些不放心了,那么以后还是自己实现一个函数来验证表达式是否是数字比较稳妥。
回复

使用道具 举报

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2007-1-15 14:42:00 | 显示全部楼层
谢谢版主。
我以前用C的时候,自己编了个程序来检查是否为数字,比较畅通。
现在用IsNumeric()函数时,出了不少错误。还以为是Bug呐。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 06:12 , Processed in 1.852567 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表