以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Format定义的两位小数值 对应的字段属性类型应该选择什么类型呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187547)

--  作者:cnsjroom
--  发布时间:2023/7/25 14:49:00
--  Format定义的两位小数值 对应的字段属性类型应该选择什么类型呢?
dr("A总分")=Format((((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(dr("A弃权")*0.3))/dr("A有效"))*100,"00.00")
dr("B总分")=Format((((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(dr("B弃权")*0.3))/dr("B有效"))*100,"00.00")
dr("总分")= Format((dr("A总分")+dr("B总分"))/2,"00.00")
Format定义的两位小数值 对应的字段属性类型应该选择什么类型呢?
sql数据库中是float 总提示小数位数大于精度数……怎么解决呢?

--  作者:有点蓝
--  发布时间:2023/7/25 14:51:00
--  
高精度。找个外部表,添加一个高精度列,然后到数据库里看看就知道数据库里是什么类型了
--  作者:cnsjroom
--  发布时间:2023/7/25 15:05:00
--  回复:(有点蓝)高精度。找个外部表,添加一个高精度...
老师  按照提示:

在狐表中设定高精度类型后   在sql中对应的数据类型是numeric(28, 4)

dr("A总分")=Format((((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(dr("A弃权")*0.3))/dr("A有效"))*100,"00.00")
dr("B总分")=Format((((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(dr("B弃权")*0.3))/dr("B有效"))*100,"00.00")
        dr("总分")= Format((dr("A总分")+dr("B总分"))/2,"00.00")
运行提示错误
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.ArgumentException: 输入字符串的格式不正确。不能在 A总分 列中存储 <NaN>。所需类型是 Decimal。 ---> System.FormatException: 输入字符串的格式不正确。

有没有办法解决A总分 B总分 总分 三个字段都是保留两位小数呢  比如98.99

--  作者:有点蓝
--  发布时间:2023/7/25 15:18:00
--  
这个提示应该是出现了除以0的操作,先判断一下除数,不等于0再除