遇到个奇怪问题看谁能分析出来为什么

BurningM 2006-04-28 08:45:31
b/s下有N个数字输入域(不过类型都设的文本),在submit时调用后台代理
代理中做如下处理:
sy = doc.p_data1(0) + doc.p_data2(0) + doc.p_data3(0) + ..... + doc.p_data13(0)

问题出在这个doc.p_data13上
当输入大于10的数据时,代理会出现overflow错误,小于10则没问题,其它字段都没有这个问题
使用print doc.p_data13(0),可以输出该值,但使用sy = doc.p_data13(0)则一样出错
把代码改成
sy = doc.p_data1(0) + doc.p_data2(0) + doc.p_data3(0) + ..... + cdbl(doc.p_data13(0))
则不再出错
谁知道为什么会overflow?
...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FANGHAONO1 2006-04-28
  • 打赏
  • 举报
回复
sy = doc.p_data1(0) + doc.p_data2(0) + doc.p_data3(0) + ..... + doc.p_data13(0)
拆成
sy = doc.p_data1(0)
sy = sy+ doc.p_data2(0)
.
.
.
sy = sy+ doc.p_data13(0)
试试
nieyuyang 2006-04-28
  • 打赏
  • 举报
回复
你是不是定义/声明了sy为Integer或Double了,这就是问题的根源。如果是我再说原因。
BurningM 2006-04-28
  • 打赏
  • 举报
回复
楼上几位:
第一位:sy可以定义,也可以不定义,我试过了结果一样
第二位:直接写sy = doc.p_data13(0)都出错,但是只发生在p_data13大于10时
第三位:除了看2外,另外绝对不是文本相加,因为如果小于10,最后加出来的数值是正确的double值,再说了,就是字符串加,也不可能才几十位就出错,sy = doc.p_data13(0)这样也会overflow?
反正我研究半天后得的结论一定是lotus的怪毛病(lotus怪毛病太多,见怪不怪了)
Frozencrown 2006-04-28
  • 打赏
  • 举报
回复
问题出在域的类型上,
首先文本相加的值是按什么来算的??他是按字符串的拼接来的
“12” + “4” = “124”
你是正好赶上你最后一个域输入10的时候就益处!!!
所以相加的时候都先转化下类型在加,
如果数值比较大就转DOUBLE类型

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧