2013-12-20 37 views
2

試圖標準蟒日期時間常規datetime.datetime和Pyphem常規ephem.Date之間轉換有時也有(除了預期截短)的範圍內特有的差異之間的時間差一秒鐘。Pyephem - datetime.datetime和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 

重複調用給類似的輸出:

[email protected]:$ ./timedifference.py 
Datetime: 2013-12-20 08:28:11.536814 
Ephem : 2013/12/20 08:28:11 
[email protected]:$ ./timedifference.py 
Datetime: 2013-12-20 08:28:16.088484 
Ephem : 2013/12/20 08:28:15 

的最後兩行示出了Datetim 16.somethig秒轉換爲15秒至ephem。日期。

有沒有解釋?

回答

3

the PyEphem home page

PyEphem使用一個簡單的浮點數來表示它的天文學程序內的日期和時間。

浮點精度總是帶來某種程度的近似值。我認爲這就是你在例子中看到的。

編輯

在更多挖掘,這不趕在這種情況下,十分之一秒的原因是ephem ignores the microseconds創建從一個日期一ephem.Date時。貌似在版本3.7.5.2

這個來回答這個問題

是不是蟒蛇雙精度浮點數精確到足以趕上秒至少十分之一在這種情況下修復?

絕對是!

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' 
+0

感謝您的回答。在這種情況下,python雙精度浮點數是否足夠精確到至少十分之幾秒? – Foehn

+0

@Foehn是的!查看更新的答案。 – mattexx