以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  小数位数无限循环  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185523)

--  作者:nuoyan89
--  发布时间:2023/2/28 8:55:00
--  小数位数无限循环
老师,如图1,1、紫色圈起来的是狐表系统自己核算的,该列是高精度小数;2、红色圈起来的是EXCEL电子表格手动核算的,是无限小数位数。我想让系统中计算时小数位数像电子表格那样是无限循环,因为不无限循环的话,汇总之后总数有误差,怎么设置呢,请帮忙看看,谢谢

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2023/2/28 8:56:48编辑过]

--  作者:有点蓝
--  发布时间:2023/2/28 9:04:00
--  
不可能是无限的。计算机存储的数值都是有限的,高精度总长度只能有28位,小数位数默认占16位:http://www.foxtable.com/webhelp/topics/0029.htm

到列属性把最大小数位数改为16:http://www.foxtable.com/webhelp/topics/0050.htm

--  作者:nuoyan89
--  发布时间:2023/2/28 9:26:00
--  
列属性我改成了16位如图1,但是计算的结果还是保留了4位,其他的全部显示了0来占有位了如图2。

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2023/2/28 9:28:00
--  
之前存储到数据库的值就已经是这样的了。重新计算一遍再给这个列赋值
--  作者:nuoyan89
--  发布时间:2023/2/28 9:42:00
--  
数据库后台的值如图3,我重新删除输入值后结果还是没有变动如图4,表事件代码如下:
Select Case e.DataCol.Name
    Case "公司社保", "工时"
        If e.DataRow("公司社保") = Nothing OrElse e.DataRow("工时") = Nothing Then
            e.DataRow("社保基数") = 0
        Else
            e.DataRow("社保基数") = e.DataRow("公司社保") / e.DataRow("工时")
            If e.NewValue = Nothing Then
                e.DataRow("社保基数") = 0
            End If
        End If
End Select

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2023/2/28 9:54:00
--  
dim a as Decimal =  e.DataRow("公司社保") / e.DataRow("工时")
msgbox(a)
e.DataRow("社保基数") =a

--  作者:nuoyan89
--  发布时间:2023/2/28 10:00:00
--  
重新计算值的位数显示无异常如图1,但是赋到单元格中时就剩下4位了,如图2

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2023/2/28 10:04:00
--  
sqltable?设置一下列属性:http://www.foxtable.com/webhelp/topics/2046.htm