考虑到您需要以秒为单位的时间的定点表示,并且您的滴答之间的时间不能以该定点格式精确表示,您如何在简单的嵌入式系统中跟踪时间?在这些情况下,您如何避免累积错误。
这个问题是对 slashdot上这篇文章的回应。
0.1 秒不能整齐地表示为二进制定点数,就像 1/3 不能整齐地表示为十进制定点数一样。任何二进制定点表示都有一个小错误。例如,如果该点后面有 8 个二进制位(即使用 256 缩放的整数值),则 256 的 0.1 乘以 25.6,将四舍五入为 25 或 26,导致 -2.3% 量级的误差或分别为 +1.6%。在该点之后添加更多的二进制位会减小此错误的规模,但不能消除它。
随着反复加法,误差逐渐累积。
如何避免这种情况?