<分区>
我在使用 Python 时遇到了一个带有浮点错误的问题。我认为在这里提及它可能会有用。
我有一个以 5000Hz 频率记录数据的外部采样系统。为了获得时间戳,我采用初始时间,然后添加 (1.0/5000) 以获得连续样本的时间戳。我很快注意到当前时间 (time.time()) 在使用循环时偏离了计算时间。只是做简单的计算,没有明显的漂移 - 一些代码:
start_time = time.time()
start_time_test = start_time
#get 512 samples - takes 512*1.0/5000 seconds
for i in arange(512):
start_time = start_time + (1.0/5000) #5khz
start_time_test = start_time_test + 512*(1.0/5000)
print time.time() - start_time_test #no drift
print time.time() - start_time # drifts
print start_time_test - start_time # constant increment
现在 start_time_test 和 start_time 之间的差异不是微不足道的 - 每 block 512 大约是 1.69e-5,很快开始累加。我很惊讶浮点错误很快就在这里发挥作用。我将在这里研究使用十进制包来限制错误。
这种级别的浮点错误是可以预期的吗? - 请注意我可能会做一些愚蠢的事情,这不是浮点错误。