Quantcast
Channel: 心跳论坛--『网络技术』最新20篇论坛主题-全文
Viewing all articles
Browse latest Browse all 19

vbs中关于IsNumeric函数的一个秘密

$
0
0

今天有个朋友找我问动网论坛的问题,批量删除过多的公告会出错,少量删则没事,后来看了一下源代码,发现程序中有段代码如下:

 

 Dim delid,fixid
 delid=replace(request.form("id"),"'","")
 delid=replace(delid,";","")
 delid=replace(delid,"--","")
 delid=replace(delid,")","")
 fixid=replace(delid," ","")
 fixid=replace(fixid,",","")
 If Not IsNumeric(fixid) Then
  Dvbbs.AddErrCode(42)
  Exit Sub
 End If

 

 

对批量提交的ID进行过滤后,又使用IsNumeric函数进行了判断,如果不是数字型就报错,我输出了一下当时提交的参数,打印fixid后,显示是1506位数字,是否这个函数不支持过长的数字呢?屏蔽这个判断后,程序不再报错,并继续向下执行完全了删除操作,原来IsNumeric函数还有这样一个不为人知的秘密,查了一下百度和google,没有找到这方面的说明,闲着没事,又继续测试该函数最长可以支持多长的数字

 

经测试后发现,最长可以支持到309位,并且当数值长度为309时,前6位最大到179769

前6位大于这个值后,只能支持308位的长度,哈哈,有意思,继续百度,觉得应该有这方面的说明

 

后来又仔细找了下,发现Single数据类型的最大正数值为 3.402823E+38,或 3.4 乘以 10 的 38 次方;Double 数据类型的最大正数值是 1.79769313486232D+308 或 1.8 乘以 10 的 308 次方。


Viewing all articles
Browse latest Browse all 19

Latest Images

Trending Articles





Latest Images