這篇文章主要講解了“Python2和Python3對中分數的轉化有何不同”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python2和Python3對中分數的轉化有何不同”吧!
在從VNPY1.92 逐步轉到VNPY2,發現了不少python2和python3的差異。
最近發現一個策略,VNPY1和VNPY2的結果怎么都不相同,回測發現,是存儲分數差異造成的。
算是python2的bug,不注意容易出錯。
python中數值類型有int整數,float浮點數等,分數通常是按照浮點數存儲的。
因為python 類型定義時候沒有指定類型,按是系統自動匹配的。在python2 中如果分數的化,比如x = 1/2;分子分母兩個都是整數,python2會認為是一個數值計算求整數,x就是0;只有當其中一個是float,才有結果是浮點數。直接在外面轉換也沒有用。
VNPY1中,手續費默認都是按照1/10000這樣錄入的,結果就是怎么也沒有手續費了。
當然python3中這個問題修改了,對于x= 1/2 會按照0.5記錄。所以。。
更新,這個時候才明白為什么vnpy1中原來代碼,會有這個
from __future__ import division
這樣就是從python3,未來的版本引入的的除法,就不會截取為0
感謝各位的閱讀,以上就是“Python2和Python3對中分數的轉化有何不同”的內容了,經過本文的學習后,相信大家對Python2和Python3對中分數的轉化有何不同這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。