恭喜,你发布的帖子
发布于 2020-12-15 18:06:57
8楼
两种方式来解决他,一个是取整加法,就是每次累加只截取整数部分,剩下的小数部分累积到下一次,最后的结果是一个整数,就不会有舍掉的问题;另一种方式是递进,用A和B来表示的话就是每次都跟B做累加,当B大于10000(也可以是其他数值,根据需要设定)时给A加10000,给B减10000,最后结果=A+B,这样B不会大于10000,可保证小数点后3位精度。
谢谢提供两个都不错的思路。
我自己实现了一个用的与第二种方式类似的方法。
按照你说的方式:
B = 瞬时值的累加
IF B> 10000.0 THEN
A = A + 10000.0
B = B - 10000.0
END
真实累加值 = A + B;这种方式比较直接。
但是这种方法最多也只能到1.0e+7 就是一千万, 如果超过1千万,那么还是会存在问题。
也就是说到一千万以上的累积量,那么还是必须自动清零,然后重新计算。
不过一般的工程应用应该差不多了, 我这边累积大约一个月会到百万级别, 也就是说大约半年到一年才会需要自动清零一次。
请填写推广理由:
分享
只看
楼主