以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  算法溢出  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169825)

--  作者:刘林
--  发布时间:2021/7/2 7:02:00
--  算法溢出
dim ks as integer
 Dim kls As DataRow = DataTables("成绩").Find(filter)
    If kls Is Nothing
        messagebox.show(tb.Current("考号"))
        kh = val(tb.Current("考号"))
        messagebox.show("问题0.24")
        Dim nj As String = tb.current("年级")
        messagebox.show("问题0.25")

原来好好的代码,现在出现  kh = val(tb.Current("考号")) 到这句时出现算法溢出,考号为字符字段。
请问老师是什么情况?谢谢

--  作者:有点蓝
--  发布时间:2021/7/2 8:38:00
--  
val的结果是双精度类型,有效数字为15位,值范围大约是:-1.79E+308 ~ +1.79E+308。应该是考号值超出了这个范围。

如果不需要用来做四则计算等数学功能的数据,建议还是使用字符串,没有必要使用数值型处理

--  作者:刘林
--  发布时间:2021/7/3 10:22:00
--  
现在就是要进行数值处理,除了val外,还有什么方式将数字型字符转成整型数据?
--  作者:有点蓝
--  发布时间:2021/7/3 10:54:00
--  
改为long
dim ks as long =  clng(tb.Current("考号"))

我想象不出来,考号居然要做加减乘除运算?还不如直接把考号列设置为整数列
[此贴子已经被作者于2021/7/3 10:54:30编辑过]

--  作者:刘林
--  发布时间:2021/7/3 11:16:00
--  
老师,有这种情况,学校已打印了所有考号信息表,坐位号等,还没考试前突然转来一学生要参加考试,就要追加一个学生报名信息,为不动其他已打表格,就追加到最后,由于前面数据结构没有想到做成整数,所有就存在上面的问题,现在改为clng就可以了,但有点不理解的是为什么原来没这个问题
--  作者:有点蓝
--  发布时间:2021/7/3 11:43:00
--  
之前的考号没有超出范围

我理解考号应该是和编号一类的东西,无法理解要用来做加减乘除运算

--  作者:刘林
--  发布时间:2021/7/3 12:07:00
--  
因为表的最追加一个,在最大考号上增加1作为追加的学生的考号
[此贴子已经被作者于2021/7/3 12:07:33编辑过]

--  作者:有点蓝
--  发布时间:2021/7/3 14:16:00
--  
灵活一点,比如获取后8位+1,和系统编号生成规则一样