尝试在标准python datetime 例程datetime.datetime和Pyphem例程之间进行转换 ephem.Date 有时会有(除了预期的截断)一个范围内的特殊差异第二
尝试示例代码:
#!/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.Date。
有解释吗?
答案 0 :(得分:3)
PyEphem使用一个简单的浮点数来表示其天文例程中的日期和时间。
浮点精度总是带来一定程度的近似。我认为这就是你在你的例子中所看到的。
修改强>
在进行更多挖掘时,在这种情况下它没有捕获十分之几秒的原因是从日期时间创建ephem.Date时的ephem ignores the microseconds。看起来有一个修复版本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'