Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要以微秒为小数点的时间戳_Python_Datetime_Microtime - Fatal编程技术网

Python 需要以微秒为小数点的时间戳

Python 需要以微秒为小数点的时间戳,python,datetime,microtime,Python,Datetime,Microtime,目前,我正在使用time.time()创建包含微时间的时间戳。但我主要是将它们与十进制和time进行比较。time()返回一个浮点 目前,我在需要时将浮点值转换为十进制值: if type(stamp) == float: stamp = Decimal(format(stamp, '.15g')) 当然,当我这样做的时候,我会失去一些精确性。还有什么方法可以得到微秒小数 您可以直接将浮点传递给十进制构造函数: d = Decimal(stamp) CPythonfloat使

目前,我正在使用time.time()创建包含微时间的时间戳。但我主要是将它们与十进制和time进行比较。time()返回一个浮点

目前,我在需要时将浮点值转换为十进制值:

if type(stamp) == float:
        stamp = Decimal(format(stamp, '.15g'))

当然,当我这样做的时候,我会失去一些精确性。还有什么方法可以得到微秒小数

您可以直接将
浮点
传递给
十进制
构造函数:

d = Decimal(stamp)
CPython
float
使用C
double
,其精度足以表示通常时间戳范围内的微秒

time.time()
datetime.utcnow()
可能会产生稍微不同的结果。后者四舍五入为微秒:

from datetime import datetime 
from decimal import Decimal

td = datetime.utcnow() - datetime(1970, 1, 1)
timestamp_microseconds = (td.days*86400 + td.seconds)*10**6 + td.microseconds
d = Decimal(timestamp_microseconds).scaleb(-6)

结果应等于十进制(time.time()),精度为微秒。

谢谢!我没有意识到我可以将浮点传递给十进制构造函数。看起来这是在2.7中添加的。令人惊叹的。然而,我确实得到了一些有趣的结果:愚蠢的5分钟规则:)谢谢!我没有意识到我可以将浮点传递给十进制构造函数。看起来我已经解决了我的问题。。。我的django模型是以小数点到6位的形式创建的,在某些情况下,它会与我前面提到的浮点值进行比较。我的问题是,将计算为6位的十进制数与一个仅仅是浮点数的浮点数进行比较