以文本方式查看主题 - 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电子表格手动核算的,是无限小数位数。我想让系统中计算时小数位数像电子表格那样是无限循环,因为不无限循环的话,汇总之后总数有误差,怎么设置呢,请帮忙看看,谢谢
[此贴子已经被作者于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。 |
-- 作者:有点蓝 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2023/2/28 10:04:00 -- sqltable?设置一下列属性:http://www.foxtable.com/webhelp/topics/2046.htm |