cint溢出解决方法,int与cint的应用区别

1年前 3921次浏览

在一个网站中,我有使用cint来将返回的数值转化为数字,如:cint(Request.Form("postid")),但是最近因为数据到达33000多了,发现程序出错了。于是查看详细错误为:

Microsoft VBScript 运行时错误 错误 '800a0006'
溢出: 'cint'
Cint介绍

分析错误先来看一下Cint这个函数

CInt函数是把表达式转换为整数(Integer)类型;值必须是介于 -32768 与 32767 之间的数字。

我一看,我的文章ID已经到了33000以上了,也就难怪会出现这个错误了,因为cint()如果数值大于32767或是小于-32768就会提示溢出了。看一下下面我的运行代码与结果

cint(32767)返回:<%=cint(32767)%></br>
cint(-32768)返回:<%=cint(-32768)%></br>
cint(32768)返回:<%=cint(32768)%></br>

image.png

原因找出来了,怎么解决呢?就是把cint换成int就行了。

Int介绍

我这里因为取的数值ID都是整数并没有涉及到小数点后面的位数,所以我直接把cint改为了int后就解决了问题。

Int函数可返回指定数字的整数部分。下面看一下用int运行上面那一段的结果:

int(32767)返回:<%=int(32767)%></br>
int(-32768)返回:<%=int(-32768)%></br>
int(32768)返回:<%=int(32768)%></br>

image.png

到这里我这个问题算是解决了,下面还是学习一下这两个函数的区别。

Cint与Int函数的区别

简单来说就是四舍五入的区别,以及数值限制的区别。

数值限制上:理论上来说int可以是任意大小的数值。而cint则是介于 -32768 与 32767 之间的数字。

四舍五入上:int是取整,所以不会四舍五入,即int(4.9)也是4,而cint是四舍五入,cint(4.9)则为5。但是这int又有个当数值为负数时,int(-4.9)则返回-5,int(-4.1)也是返回-5,而cint则是严格按照四舍五入来计算。这里则可以认为int(num)是返回num最小整数。

当然如上面我说的,我的返回ID值也不涉及小数及负数,所以我直接使用int就解决了cint的溢出问题。