是否可以在Python 2.5中將time.time()的輸出作爲Decimal接收?Python 2.5 time.time()十進制
如果不是(並且它必須是浮點數),那麼是否有可能保證不準確性總是會超過(而不是小於)原始值。換句話說:
>>> repr(0.1)
'0.10000000000000001' # More than 0.1 which is what I want
>>> repr(0.99)
'0.98999999999999999' # Less than 0.99 which is unacceptable
代碼示例:
import math, time
sleep_time = 0.1
while True:
time_before = time.time()
time.sleep(sleep_time)
time_after = time.time()
time_taken = time_after - time_before
assert time_taken >= sleep_time, '%r < %r' % (time_taken, sleep_time)
編輯:
現在使用以下(不測試失敗,但仍然可以從理論上失敗):
import time
from decimal import Decimal
def to_dec(float_num):
return Decimal('%2f' % float_num)
sleep_time = to_dec(0.1)
while True:
time_before = to_dec(time.time())
time.sleep(float(sleep_time))
time_after = to_dec(time.time())
time_taken = time_after - time_before
assert time_taken >= sleep_time, '%r < %r' % (time_taken, sleep_time)
print 'time_taken (%s) >= sleep_time (%s)' % (time_taken, sleep_time)
爲了幫助我們給予合理的答案,你能解釋這背後要求的真正目的是什麼? – NPE
這是一個定時功能,需要在可能睡眠的呼叫前後註冊一個時間。所以'在睡眠時間>之前的時間之後斷言 - 浮動並不總是這種情況。記住time.time()給你一個浮點數。 – Metalshark