2011-07-20 70 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精度的目标) –