【发布时间】:2012-11-08 00:40:33
【问题描述】:
我想在 python 中以亚秒级精度捕获时间戳。看起来标准答案是int(time.time() * 1000)
但是,如果time.time() 返回一个浮点数,你不会有精度问题吗?会有一些值不能准确地表示为浮点数。
我担心某些小数时间不能正确表示为浮点数,并且在这些情况下时间戳会向前或向后跳跃。
这是一个有效的担忧吗?
如果是这样,解决方法是什么?
【问题讨论】:
-
如果是用于性能测量,那么您可以使用timeit.default_timer()
-
您不想直接保留 time.time 的结果是否有特殊原因?乘以非二的幂肯定会混淆你的“精确度”;最好保留你得到的东西,然后只在最后舍入或截断。例如。
starttime = time.time(); DoStuff(); now = time.time(); elapsed = now - starttime; elapsedms = int(1000 * elapsed) -
我实际上是在尝试将测量结果放入时间“桶”中。所以我需要花一些绝对时间,除以一个周期长度,然后把测量结果扔到那个桶里。但我担心在那个计算中,一些测量值会落入错误的位置。但是,听起来我还可以;显示的错误是如此之小,以至于自然舍入可以解决它。
-
好吧,见下文。我打算找个例子,我输入的第一个例子是 >>> int(1.001*1000) \ 1000 所以我必须用 >>> int(1.001* 1000+.1) \ 1001