我写了这样一条语句,但程序说溢出,为什么?
是
result=a*b*c*d*e*f*g*h*i*j*k*l
全算完也就2000000左右,为什么会溢出?
问题点数:20、回复次数:12Top
1 楼lily0000000(heaven)回复于 2002-04-10 16:54:27 得分 0
看result的类型Top
2 楼bestofbest(咖啡)回复于 2002-04-10 16:56:38 得分 0
用double long试试Top
3 楼bestofbest(咖啡)回复于 2002-04-10 16:57:59 得分 0
我说的是result用Double类型定义Top
4 楼sunnycai(飞鸟)回复于 2002-04-10 16:58:31 得分 0
Dim result As Double
result=cdbl(a)*b*c*d*e*f*g*h*i*j*k*l
Top
5 楼ERR(太阳)回复于 2002-04-10 16:58:32 得分 0
result 恐怕是Integer型的吧
改成 As LongTop
6 楼combread()回复于 2002-04-10 16:59:26 得分 0
result
你应该定义为Double类型。或是Long
Integer肯定会溢出的Top
7 楼combread()回复于 2002-04-10 17:06:28 得分 0
用飞鸟的方法,没错。Top
8 楼IamChen(IamChen0)回复于 2002-04-10 17:07:29 得分 0
不溢出才怪,肯定是类型不对Top
9 楼xxlroad(土八路)回复于 2002-04-10 17:12:10 得分 0
32767Top
10 楼duckbill(Duckbill)回复于 2002-04-10 17:22:41 得分 0
改成double不行Top
11 楼duckbill(Duckbill)回复于 2002-04-10 17:23:44 得分 0
用飞鸟得办法,可以,能说说为什么么?Top
12 楼sunnycai(飞鸟)回复于 2002-04-11 10:10:03 得分 15
double是双精度的可存放较长的数据。公式中用到cdbl把其中一个变量转为double型的,那么结果就是double的了。Top
13 楼sbnth(金鳞岂非池中物,一遇风云便化龙)回复于 2002-04-11 13:45:17 得分 5
因为对于表达式:
x=a*b,a*b的结果的类型跟a的类型一致,如果a的类型不能容纳a*b的值,结果就会溢出,所以要不溢出的话,就必须将a定义为一个能容纳a*b的值的类型就可以了。Top




