2011-07-20 77 views
3

是否有任何方式編譯Python的解釋器,以便它可以使用本地(c)任意精度庫,以便Python可以使用任意精度,就好像它是一個正常數字,而不必使用十進制類?Python原生任意精度

EG。

>>0.00000001 + 1 
1.00000001 
+1

即使有可能,你也不應該這樣做。依賴於此的代碼能夠正確工作(或者更確切地說,足夠準確 - 小數的精度也有限),在世界上任何其他Python安裝上運行時都會中斷。在產生大致相同的結果時,代碼不僅運行得慢(有點相當多)。 – delnan

+0

@delnan:非常好。 :) – EOL

回答

3

如果你不滿意內建decimal,你可以嘗試實現更高的精度浮點數的幾個庫。然而,他們中的大多數並不完全是「本土的」 - 你可能會澄清你的意思,爲什麼你需要它。

  1. mpmath - 它提供了一個純Python實現高精度浮點數,但它可以自動切換到GNU MP如果它支持可在系統上,它具有廣泛的功能集
  2. gmpy - 它提供了一個包裝爲GNU MP庫
  3. bigfloat - 它提供了GNU MPFR庫的包裝(它是基於GNU MP;包裝不看非常有前途的,因爲它使用​​)
  4. 你可以使用Cython並使用任何上述庫(例如GNU M P),如果它是給定的性能關鍵部分所需的。你也可以爲你的用例製作一個臨時的Cython包裝器。
+0

我知道我從圖書館的任意精度有不同的選擇,但問題更多的是關於我是否可以使用它們,如果他們是正常的Python浮游物,但確切的。 –

+0

你不能這樣做(不修改Python本身);你爲什麼想這樣做,你期望從中獲得什麼? –

+1

我試圖找到一種使用任意精度而不會使代碼複雜化的方法(管理人員不太瞭解fp精度的目標) –