以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 什么情况小该用高精度小数 (http://foxtable.net/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 大数据统计的时候差距就出来了 |