尝试在标准python datetime例程datetime.datetime和Pyphem例程ephem之间进行转换。日期有时(除了预期的截断)在一秒的范围内存在奇特的差异。
尝试示例代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ephem
import datetime
now_datetime = datetime.datetime.now()
now_ephem = ephem.Date(now_datetime)
print "Datetime: ", now_datetime
print "Ephem : ", now_ephem
重复调用给出的输出类似于:
thl@thl-lap-001:$ ./timedifference.py
Datetime: 2013-12-20 08:28:11.536814
Ephem : 2013/12/20 08:28:11
thl@thl-lap-001:$ ./timedifference.py
Datetime: 2013-12-20 08:28:16.088484
Ephem : 2013/12/20 08:28:15
最后两行在 Datetim 中显示 16.somethig 秒,转换为 15 秒到ephem。日期。
有解释吗?
来自 PyEphem 主页:
PyEphem使用一个简单的浮点数来表示其天文学例程中的日期和时间。
浮点精度总是带来某种程度的近似。我认为这就是你在例子中看到的。
编辑
经过更多的挖掘,在这种情况下它没有捕捉到十分之一秒的原因是 ephem 在创建 ephem 时忽略了微秒。日期时间的日期。看起来在版本 3.7.5.2 中对此进行了修复
回答问题
在这种情况下,python双精度浮点数不够精确,可以捕获至少十分之一秒吗?
绝对!
import ephem
'%f' % ephem.Date('2013/12/20 12:34:56')
=> '41627.024259'
'%f' % ephem.Date('2013/12/20 12:34:56.1')
=> '41627.024260'