以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  什么情况小该用高精度小数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=174671)

--  作者:sky-18
--  发布时间:2022/1/26 3:05:00
--  什么情况小该用高精度小数
Dim a As Single
Dim b As Single
Dim c As Single
a = 93218.4
b = 100000
c = b - a
Output.show(c)
结果等于:6781.602
结果错得很离谱!!!!!!!!!!
然后把数据类型改为double
Dim a As double
Dim b As double
Dim c As double
a = 93218.4
b = 100000
c = b - a
Output.show(c)
结果等于:6781.60000000001
结果仍然是错误的!!!
最后发现,换成高精度小数的时候就没问题了。
但关键是帮助文档上写明除非必要不要使用高精度小数,说会影响计算速度。
但是这么一个简单的一位小数的减法都不能算对我还能用double吗(single是肯定不能用了!)?或者只好对每次的计算结果都四舍五入?还是说把所有的小数数据类型都改成高精度小数?


--  作者:lgzhao
--  发布时间:2022/1/26 5:25:00
--  
如果是一般的财务数据,物品重量等,如果把列有效位数控制在两位小数,系统会在存储的时候自动舍入,那么应该没区别吧。
--  作者:有点蓝
--  发布时间:2022/1/26 8:26:00
--  
需要精确计算结果的时候就使用高精度。
--  作者:chen37280600
--  发布时间:2022/1/26 8:26:00
--  
凡是小数,你一律上Decimal,啥都别问,啥都别纠结,以后准没坑
--  作者:sky-18
--  发布时间:2022/1/26 10:59:00
--  
帮助文档上不是说不要轻易使用高精度小数吗?
我想所有的小数列都用高精度小数,但又怕帮助文档上说得万一极大影响计算的话就麻烦了。
同时我的数据列里面小数比较多,相互之间都有计算,就怕不用高精度会出来意想不到的问题。而且计算结果每次都要去舍入一次感觉也挺麻烦的。


--  作者:sky-18
--  发布时间:2022/1/26 10:59:00
--  
会不会出现项目运行速度慢的情况呢?
--  作者:有点蓝
--  发布时间:2022/1/26 11:02:00
--  
正常影响不大。

再说了如果对精度要求高,就只能使用高精度类型,没有其它方法。就算真的有影响,也只能忍着

--  作者:rjh4078
--  发布时间:2022/1/26 20:33:00
--  
建议都上Decimal 大数据统计的时候差距就出来了